FileOperator.cs 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using Aliyun.OSS;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.IO;
  6. using System.Threading.Tasks;
  7. using Org.BouncyCastle.Utilities.Collections;
  8. using Wicture.DbRESTFul.Configuration;
  9. using JiaZhiQuan.Common.Config;
  10. namespace JiaZhiQuan.Common.AliOSS
  11. {
  12. public class FileOperator
  13. {
  14. public async static Task<string> GetFileContent(string key, string bucketName, string endPoint, string accessKeyId, string accessKeySecret)
  15. {
  16. OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
  17. return await GetFileContent(key, bucketName, ossClient);
  18. }
  19. public async static Task<string> GetFileContent(string key, string bucketName, OssClient ossClient)
  20. {
  21. GetObjectRequest request = new GetObjectRequest(bucketName, key);
  22. var rst = await Task.Factory.FromAsync(ossClient.BeginGetObject, ossClient.EndGetObject, request, null);
  23. if (rst.HttpStatusCode != System.Net.HttpStatusCode.OK) return string.Empty;
  24. using StreamReader sr = new StreamReader(rst.ResponseStream);
  25. return await sr.ReadToEndAsync();
  26. }
  27. public async static Task<Stream> GetFileStreamAsync(string key, bool isDev, string accessKeyId, string accessKeySecret)
  28. {
  29. var ossConfig = BuildOssConfig(isDev, accessKeyId, accessKeySecret);
  30. var ossClient = BuildOssClient(ossConfig);
  31. GetObjectRequest request = new GetObjectRequest(ossConfig.OSSBucket, key);
  32. var rst = await Task.Factory.FromAsync(ossClient.BeginGetObject, ossClient.EndGetObject, request, null);
  33. if (rst.HttpStatusCode != System.Net.HttpStatusCode.OK) return null;
  34. return rst.ResponseStream;
  35. }
  36. public static void RemoveFile(List<string> keys, string bucketName, string endPoint, string accessKeyId, string accessKeySecret)
  37. {
  38. OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
  39. RemoveFile(keys, bucketName, ossClient);
  40. }
  41. public static void RemoveFile(List<string> keys, string bucketName, OssClient ossClient)
  42. {
  43. ossClient.DeleteObjects(new DeleteObjectsRequest(bucketName, keys));
  44. }
  45. /// <summary>
  46. /// 构建OSS操作对象,返回OSSClient和OSSConfig
  47. /// </summary>
  48. /// <param name="isDev"></param>
  49. /// <param name="accessKeyId"></param>
  50. /// <param name="accessKeySecret"></param>
  51. /// <returns></returns>
  52. public static OssClient BuildOssClient(OSSConfig OSSConfig)
  53. {
  54. var OSSClient = new OssClient(OSSConfig.EndPoint, OSSConfig.AccessKeyId, OSSConfig.AccessKeySecret);
  55. return OSSClient;
  56. }
  57. /// <summary>
  58. /// 创建OSSConfig对象
  59. /// </summary>
  60. /// <param name="isDev"></param>
  61. /// <param name="accessKeyId"></param>
  62. /// <param name="accessKeySecret"></param>
  63. /// <param name="bucket"></param>
  64. /// <returns></returns>
  65. public static OSSConfig BuildOssConfig(bool isDev, string accessKeyId, string accessKeySecret, string bucket = null)
  66. {
  67. var ossInternal = bool.Parse(ConfigurationManager.Settings.Variables["OSS.Internal"]);
  68. var OSSConfig = new OSSConfig
  69. {
  70. DomainUrl = isDev ? "https://olscdndev.olssglobal.com/" : "https://olscdn.olssglobal.com/",
  71. InternalDomainUrl = !ossInternal ? "" : isDev ? "https://olss-ols-cdn-dev.oss-cn-shanghai-internal.aliyuncs.com/" : "http://olss-ols-cdn.oss-cn-shanghai-internal.aliyuncs.com/",
  72. AccessKeyId = accessKeyId,
  73. AccessKeySecret = accessKeySecret,
  74. EndPoint = !ossInternal ? "oss-cn-shanghai.aliyuncs.com" : "oss-cn-shanghai-internal.aliyuncs.com"
  75. };
  76. if (string.IsNullOrEmpty(bucket))
  77. {
  78. // 设置默认bucket
  79. OSSConfig.OSSBucket = isDev ? "olss-ols-cdn-dev" : "olss-ols-cdn";
  80. }
  81. else
  82. {
  83. OSSConfig.OSSBucket = bucket;
  84. }
  85. return OSSConfig;
  86. }
  87. }
  88. }