c#-将文件上传到Azure Blob存储
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-将文件上传到Azure Blob存储,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2430字,纯文字阅读大概需要4分钟。
内容图文
我想异步地将文件上传到Azure blob存储.我尝试了官方SDK中建议的方式:
这是我得到容器的方式:
public static class BlobHelper
{
public static CloudBlobContainer GetBlobContainer()
{
// Pull these from config
var blobStorageConnectionString = ConfigurationManager.AppSettings["BlobStorageConnectionString"];
var blobStorageContainerName = ConfigurationManager.AppSettings["BlobStorageContainerName"];
// Create blob client and return reference to the container
var blobStorageAccount = CloudStorageAccount.Parse(blobStorageConnectionString);
var blobClient = blobStorageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(blobStorageContainerName);
container.CreateIfNotExists();
container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
return container;
}
}
这就是我尝试上传文件的方式:
var documentName = Guid.NewGuid().ToString();
CloudBlobContainer container = BlobHelper.GetBlobContainer();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(documentName);
public class FilesService
{
public async Task<string> UploadFiles(HttpContent httpContent)
{
var documentName = Guid.NewGuid().ToString();
CloudBlobContainer container = BlobHelper.GetBlobContainer();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(documentName);
using (var fileStream = System.IO.File.OpenRead(@"path\myfile"))
{
await blockBlob.UploadFromStreamAsync(fileStream);
}
return blockBlob.Uri.ToString();
}
}
问题是我不知道如何获取文件的路径(该路径由用户上传).
当我尝试这个:
var rootpath = HttpContext.Current.Server.MapPath("~/App_Data");
var streamProvider = new MultipartFileStreamProvider(rootpath);
await httpContent.ReadAsMultipartAsync(streamProvider);
foreach (var file in streamProvider.FileData)
{
var localName = file.LocalFileName;
using (var fileStream = System.IO.File.OpenRead(file.LocalFileName))
{
await blockBlob.UploadFromStreamAsync(fileStream);
}
}
当我尝试发布请求时.该请求只是崩溃而不会返回任何内容(即使是异常);
解:
该问题已通过以下方式解决.我使用了一种服务方法,以便能够上载文件集合.
在BlobHelper类中,我保存了有关容器的所需信息,然后实例化它,这是一个静态类.使用集合可以将多个文件作为同一流的一部分上载.
解决方法:
我认为您正在尝试获取使用标准ASP.NET方法和本地上下文上传到Blob存储的文件的路径.上传到Blob的文件将无法通过这种方式访问??.
好像您正确上传了Blob.现在,如果文件成功上传,则您的方法应返回blockBlob.Uri.ToString(),这是文件的链接-您可以将其存储在数据库中的某个位置或其他位置.
内容总结
以上是互联网集市为您收集整理的c#-将文件上传到Azure Blob存储全部内容,希望文章能够帮你解决c#-将文件上传到Azure Blob存储所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。