C# Azure上载Blob而不刷新页面
我遵循Azure Blob官方上传文档,并成功实现了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
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存储中,基本上有两种方法:
共享访问签名
,至少具有写入
权限,并允许从web应用程序到存储帐户的跨源请求(COR)。这样,文件就可以直接传输到您的存储帐户中。我还写了一篇博客文章,你可能会发现这篇文章很有用:我的建议是选择选项1,因为它速度更快,不会使您的web服务器过载。谢谢Gaurav。事实上,在你发布文章前几分钟,我登陆了你的网站并阅读了那篇文章。信息量很大。然而,这似乎有点复杂。。没关系,我试试看。它在代码中的何处查找需要上载的文件上载者的文件?请参阅我博客文章中的
reader.onloadend
函数。这就是上传魔法发生的地方:)<代码>Web应用程序部分是您想要阅读和理解的内容。因为它是一个控制台应用程序,在我的情况下,我必须向上载按钮添加哪种方法?单击mate?请你用答案解释一下好吗?主要帮助,高拉夫现在我很困惑:)。我以为你想在web应用程序中使用它。这个控制台应用程序是从哪里来的?糟糕,对不起。基本上,我的是一个aspx页面,它有一个输入文件控件和一个按钮(仅用于测试目的)。单击按钮时,图像将上载到存储器,但页面将刷新。因此,通过参考您的代码,我可以对我在问题Gaurav中发布的现有代码进行哪些更改?对于如何将您的代码添加到现有代码中,我有点困惑:)