使用的是VS2017
一、先使用 NuGet 获取这两个包。 执行以下步骤:
在“解决方案资源管理器”中,右键单击你的项目并选择“管理 NuGet 包”。
1.在线搜索“WindowsAzure.Storage”,然后单击“安装” 以安装存储客户端库和依赖项。
2.在线搜索“WindowsAzure.ConfigurationManager”,然后单击“安装”以安装 Azure Configuration Manager。
会生成5个dll,如下图:
封装代码如下:
需要先引用
using Microsoft.Azure; using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob;
1).AzureBlob.cs
public class AzureBlob { #region 私有变量 //类的成员,用于创建Blob服务客户端 CloudBlobClient blobClient; //容器和Blob其实就相当于文件夹、文件名 /// <summary> /// 连接字符串 /// </summary> private string storageConnectionString = CloudConfigurationManager.GetSetting("StorageConnectionString"); #endregion #region 构造函数创建Blob服务客户端 public AzureBlob() { //解析配置中的连接字符串 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString); //创建Blob服务客户端 blobClient = storageAccount.CreateCloudBlobClient(); } #endregion #region 获取块Blob引用 /// <summary> /// 获取块Blob引用 /// </summary> /// <param name="mycontainer">容器名</param> /// <param name="fileName">文件名</param> /// <returns></returns> public CloudBlockBlob GetContainer(string mycontainer, string fileName) { //获取容器的引用 CloudBlobContainer container = blobClient.GetContainerReference(mycontainer); //获取块 Blob 引用 CloudBlockBlob blob = container.GetBlockBlobReference(fileName); return blob; } #endregion #region 二进制形式上传文件 /// <summary> /// 二进制形式上传文件 /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> /// <param name="bytes">二进制形式的文件</param> /// <returns>异步信息</returns> public Task UploadToBlob(string fileName,string mycontainer,byte[] bytes) { //获取容器的引用 CloudBlobContainer container = blobClient.GetContainerReference(mycontainer); //创建一个容器(如果该容器不存在) container.CreateIfNotExists(); //设置该容器为公共容器,也就是说网络上能访问容器中的文件,但不能修改、删除 container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); //将Blob(文件)上载到容器中,如果已存在同名Blob,则覆盖它 CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);//获取块 Blob 引用 Task result = blockBlob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);//将二进制文件上传 return result; } #endregion #region 文件路径上传 /// <summary> /// 文件路径上传 /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> /// <param name="filePath">文件路径</param> /// <returns></returns> public string UploadToBlob(string fileName, string mycontainer,string filePath) { ////获取容器的引用 CloudBlobContainer container = blobClient.GetContainerReference(mycontainer); //创建一个容器(如果该容器不存在) container.CreateIfNotExists(); //设置该容器为公共容器,也就是说网络上能访问容器中的文件,但不能修改、删除 container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); //将Blob(文件)上载到容器中,如果已存在同名Blob,则覆盖它 CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);//获取块 Blob 引用 //文件路径 using (var fileStream = System.IO.File.OpenRead(filePath)) { blockBlob.UploadFromStream(fileStream); } return blockBlob.Uri.ToString(); } #endregion #region 根据文件名和容器名取到Blob地址 /// <summary> /// 根据文件名和容器名取到Blob地址 /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> /// <returns></returns> public string GetBlobURI(string fileName, string mycontainer) { CloudBlockBlob blob = GetContainer(mycontainer, fileName); return blob.Uri.ToString(); } #endregion #region 下载Blob /// <summary> /// 下载Blob /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> /// <param name="fliePath">文件路径</param> public void DownloadToFile(string fileName, string mycontainer, string fliePath) { CloudBlockBlob blob = GetContainer(mycontainer, fileName); using (var fileStream = File.OpenWrite(fliePath)) { blob.DownloadToStream(fileStream); //将blob保存在指定路径 } } #endregion #region 下载Blob /// <summary> /// 下载Blob /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> /// <param name="fliePath">文件路径</param> public string DownloadToStream(string fileName, string mycontainer) { CloudBlockBlob blob = GetContainer(mycontainer, fileName); string text; using (var memoryStream = new MemoryStream()) { blob.DownloadToStream(memoryStream); text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray()); } return text; } #endregion #region 下载Blob /// <summary> /// 下载Blob /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> /// <param name="fliePath">文件路径</param> public void DownloadToFileStream(string fileName, string mycontainer, string fliePath) { CloudBlockBlob blob = GetContainer(mycontainer, fileName); using (var fileStream = new FileStream(fliePath, FileMode.OpenOrCreate)) { blob.DownloadToStream(fileStream); //将blob保存在指定路径 }; } #endregion #region 删除Blob /// <summary> /// 删除Blob /// </summary> /// <param name="fileName">文件名</param> /// <param name="mycontainer">容器名</param> public void DeleteBlob(string fileName, string mycontainer) { CloudBlockBlob blob = GetContainer(mycontainer, fileName); blob.Delete(); } #endregion }