C# Azure上载Blob而不刷新页面

C# Azure上载Blob而不刷新页面,c#,asp.net,azure,file-upload,azure-storage-blobs,C#,Asp.net,Azure,File Upload,Azure Storage Blobs,我遵循Azure Blob官方上传文档,并成功实现了Blob上传功能。但是,页面在上传后会刷新,我需要这样做:上传图像时不必刷新页面。基本上没有回发 以下是我目前掌握的情况: if (profile_pic_input.HasFile) { var image = Request.Files["profile_pic_input"]; CloudStorageAccount storageAccount

我遵循Azure Blob官方上传文档,并成功实现了Blob上传功能。但是,页面在上传后会刷新,我需要这样做:上传图像时不必刷新页面。基本上没有回发

以下是我目前掌握的情况:

       if (profile_pic_input.HasFile)
       {
                var image = Request.Files["profile_pic_input"];

                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
                CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient();
                CloudBlobContainer container = blobStorage.GetContainerReference("photos");
                if (container.CreateIfNotExists())
                {
                    // configure container for public access
                    var permissions = container.GetPermissions();
                    permissions.PublicAccess = BlobContainerPublicAccessType.Container;
                    container.SetPermissions(permissions);
                }


                String tempName = GeneratePictureName();
                string uniqueBlobName = string.Format("photos/image_{0}{1}", tempName, Path.GetExtension(image.FileName));
                CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName);



                blob.Properties.ContentType = image.ContentType;
                blob.UploadFromStream(image.InputStream);
       }

为了避免回发,您需要使用。大多数常见的JavaScript框架都支持这一点

现在使用AJAX将文件上传到blob存储中,基本上有两种方法:

  • 从用户浏览器直接上传到Blob存储中:如果您的用户使用支持HTML5的现代浏览器,则他们可以直接将文件从本地计算机上传到Blob存储中。有关详细信息,请参阅此链接:。基本上,您要做的是创建一个
    共享访问签名
    ,至少具有
    写入
    权限,并允许从web应用程序到存储帐户的跨源请求(COR)。这样,文件就可以直接传输到您的存储帐户中。我还写了一篇博客文章,你可能会发现这篇文章很有用:

  • 将文件从用户浏览器上载到web服务器,然后将文件传输到blob存储中。如果您搜索AJAX和文件上传,我相信您会找到大量的资源,这些资源将告诉您如何工作


  • 我的建议是选择选项1,因为它速度更快,不会使您的web服务器过载。

    谢谢Gaurav。事实上,在你发布文章前几分钟,我登陆了你的网站并阅读了那篇文章。信息量很大。然而,这似乎有点复杂。。没关系,我试试看。它在代码中的何处查找需要上载的文件上载者的文件?请参阅我博客文章中的
    reader.onloadend
    函数。这就是上传魔法发生的地方:)<代码>Web应用程序部分是您想要阅读和理解的内容。因为它是一个控制台应用程序,在我的情况下,我必须向上载按钮添加哪种方法?单击mate?请你用答案解释一下好吗?主要帮助,高拉夫现在我很困惑:)。我以为你想在web应用程序中使用它。这个控制台应用程序是从哪里来的?糟糕,对不起。基本上,我的是一个aspx页面,它有一个输入文件控件和一个按钮(仅用于测试目的)。单击按钮时,图像将上载到存储器,但页面将刷新。因此,通过参考您的代码,我可以对我在问题Gaurav中发布的现有代码进行哪些更改?对于如何将您的代码添加到现有代码中,我有点困惑:)