在 ASP.NET 中使用文件上传器将图像上传到 Azure Blob?
Uploading Image to Azure Blob using File Uploader in ASP.NET?
我需要允许用户指定需要上传到 Azure 数据库的图像,而不是像所有教程那样对图像路径进行硬编码。这是我目前所拥有的:
<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?
您的 UploadFromFile
使用了错误的参数。参见微软 CloudBlockBlob.UploadFromFile。第一个参数应该是文件路径,即 C:\Users\etc...
而不仅仅是您正在解析的文件的名称 imageUploader.PostedFile.FileName
.
您很可能希望像这样使用 UploadFromStream
:
blockBlob.UploadFromStream(imageUploader.PostedFile.InputStream);
您应该查看 CloudBlockBlob 的文档,因为有许多不同的上传方法。
我需要允许用户指定需要上传到 Azure 数据库的图像,而不是像所有教程那样对图像路径进行硬编码。这是我目前所拥有的:
<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?
您的 UploadFromFile
使用了错误的参数。参见微软 CloudBlockBlob.UploadFromFile。第一个参数应该是文件路径,即 C:\Users\etc...
而不仅仅是您正在解析的文件的名称 imageUploader.PostedFile.FileName
.
您很可能希望像这样使用 UploadFromStream
:
blockBlob.UploadFromStream(imageUploader.PostedFile.InputStream);
您应该查看 CloudBlockBlob 的文档,因为有许多不同的上传方法。