使用ASP.NET中的File Uploader将图像上传到Azure Blob?

时间:2015-02-22 12:23:42

标签: c# asp.net .net azure azure-storage

我需要允许用户指定需要上传到Azure DB的图像,而不是像所有教程那样硬编码图像路径。这就是我到目前为止所做的:

<asp:FileUpload ID="imageUploader" runat="server" />
<asp:Button ID="uploadBtn" runat="server" Text="Upload Image" class="btn btn-success btn-sm" OnClick="uploadBtn_Click" />

代码:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

 // Retrieve a reference to a container. 
CloudBlobContainer container = blobClient.GetContainerReference("pictures");

// Create the container if it doesn't already exist.
container.CreateIfNotExists();
container.SetPermissions(new BlobContainerPermissions
{
        PublicAccess = BlobContainerPublicAccessType.Blob
});

CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");

blockBlob.UploadFromFile(imageUploader.PostedFile.FileName, FileMode.Open);

然而,这似乎不起作用。如何使用ASP.NET中的文件上载程序将图像上传到azure?

1 个答案:

答案 0 :(得分:3)

您的UploadFromFile使用了错误的参数。请参阅Microsoft CloudBlockBlob.UploadFromFile。第一个参数应该是文件路径,即C:\Users\etc...,而不仅仅是要解析的文件的名称imageUploader.PostedFile.FileName

您很可能希望像{I}这样使用UploadFromStream

blockBlob.UploadFromStream(imageUploader.PostedFile.InputStream);

您应该查看CloudBlockBlob的文档,因为有许多不同的上传方法。