net azure.storage.blobs 公共方法
public class AzureBlobHelper { /// <summary> /// 初始化链接字符串 /// </summary> private static string ConnectionString = "azureBlob链接字符串"; /// <summary> /// 获取blob容器公共方法 /// </summary> /// <typeparam name="T">返回类型(泛型)</typeparam> /// <param name="func">执行的委托</param> /// <param name="blobContainerName">容器名称</param> /// <returns></returns> private static T Do<T>(Func<BlobContainerClient, T> func, string blobContainerName) { try { var container = new BlobContainerClient(ConnectionString, blobContainerName); //// 容器不存在创建容器 if (!container.Exists()) { container.Create(); } return func(container); } catch (Exception ex) { WriteSqlErrorLog(ex); throw ex; } } #region 附件是否存在 /// <summary> /// 附件是否存在 /// </summary> /// <param name="blobname">blob名称(文件名称带后缀)</param> /// <param name="blobContainerName">容器名称</param> /// <returns></returns> public static bool FileIsExist(string blobname, string blobContainerName) { var res = Do(container => { BlobClient blobClient = container.GetBlobClient(blobname); return blobClient.Exists(); }, blobContainerName); return res; } #endregion #region 附件上传 /// <summary> /// 附件上传 /// </summary> /// <param name="blobname">blob名称(文件名称带后缀)</param> /// <param name="content">上传的文件流</param> /// <param name="blobContainerName">容器名称</param> /// <returns></returns> public static bool UpLoadFile(string blobname, Stream content, string blobContainerName) { var res = Do(container => { BlobClient blobClient = container.GetBlobClient(blobname); var blobHeadersObj = new BlobHttpHeaders() { ContentType = blobname.GetContentType() }; var Status = blobClient.Upload(content, blobHeadersObj); //上传成功状态为201 if (Status.GetRawResponse().Status == 201) { return true; } else { return false; } }, blobContainerName); return res; } #endregion #region 附件下载 /// <summary> /// 附件下载 /// </summary> /// <param name="blobname">blob名称(文件名称带后缀)</param> /// <param name="blobContainerName">容器名称</param> /// <returns></returns> public static MemoryStream DownloadFile(string blobname, string blobContainerName) { var res = Do(container => { MemoryStream memStream = new MemoryStream(); BlobClient blobClient = container.GetBlobClient(blobname); blobClient.DownloadTo(memStream); return memStream; }, blobContainerName); return res; } #endregion #region 附件删除 /// <summary> /// 附件删除 /// </summary> /// <param name="blobName">blob名称(文件名称带后缀)</param> /// <param name="blobContainerName">容器名称</param> /// <returns></returns> public bool DeleteBlobAsync(string blobName, string blobContainerName) { var res = Do(container => { return container.DeleteIfExists(); }, blobContainerName); return res; } #endregion #region 获取所有Blob名称 /// <summary> /// 获取所有Blob名称 /// </summary> /// <param name="blobContainerName">容器名称</param> /// <returns></returns> public IEnumerable<string> GetBlobsNameList(string blobContainerName) { var res = Do(container => { var items = new List<string>(); foreach (var blobItem in container.GetBlobs()) { items.Add(blobItem.Name); } return items; }, blobContainerName); return res; } #endregion #region 操作报错处理 /// <summary> /// 操作报错处理 /// </summary> /// <param name="parameter"></param> /// <param name="ex"></param> public static void WriteSqlErrorLog(Exception ex) { sys_sqlerrorlogHandler handler = new sys_sqlerrorlogHandler(null, "AzureBlob", null, ex); handler.WriteLog(); } #endregion }
根据文件名称(全称带后缀.txt等)获取文件类型
public static class FileExtensions { private static readonly FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider(); /// <summary> /// 获取文件类型 /// </summary> /// <param name="fileName">文件名称(文件名全称:带后缀名)</param> /// <returns></returns> public static string GetContentType(this string fileName) { if (!provider.TryGetContentType(fileName, out var contentType)) { contentType = "application/octet-stream"; } return contentType; } }

浙公网安备 33010602011771号