using Aliyun.OSS; using NPOI.HPSF; using System; using System.Collections.Generic; using System.Linq; using System.Security.AccessControl; using System.Text; using System.Threading.Tasks; namespace CloudGaming.Code.Aliyun { /// /// 阿里云扩展 /// public static class AliyunConfigExtend { private static readonly Dictionary MimeTypes = new Dictionary(StringComparer.InvariantCultureIgnoreCase) { { ".txt", "text/plain" }, { ".html", "text/html" }, { ".htm", "text/html" }, { ".css", "text/css" }, { ".js", "application/javascript" }, { ".json", "application/json" }, { ".xml", "application/xml" }, { ".jpg", "image/jpeg" }, { ".jpeg", "image/jpeg" }, { ".png", "image/png" }, { ".gif", "image/gif" }, { ".bmp", "image/bmp" }, { ".webp", "image/webp" }, { ".svg", "image/svg+xml" }, { ".pdf", "application/pdf" }, { ".doc", "application/msword" }, { ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" }, { ".xls", "application/vnd.ms-excel" }, { ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }, { ".ppt", "application/vnd.ms-powerpoint" }, { ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation" }, { ".zip", "application/zip" }, { ".rar", "application/x-rar-compressed" }, { ".7z", "application/x-7z-compressed" }, { ".mp3", "audio/mpeg" }, { ".wav", "audio/wav" }, { ".mp4", "video/mp4" }, { ".avi", "video/x-msvideo" }, { ".mov", "video/quicktime" } }; public static string GetContentType(string fileName) { if (string.IsNullOrEmpty(fileName)) throw new ArgumentException("文件名称不能为空", nameof(fileName)); string extension = System.IO.Path.GetExtension(fileName); if (MimeTypes.TryGetValue(extension, out string contentType)) { return contentType; } return "application/octet-stream"; // 默认值 } /// /// 获取上传地址 /// /// 配置 /// 上传图片名称 /// 上传类型 /// public static string GeneratePresignedUri(this AliyunOssConfig aliyunOssConfig, string objectName) { var contentType = GetContentType(objectName); return GeneratePresignedUri(aliyunOssConfig, objectName, contentType); } /// /// 获取上传地址 /// /// 配置 /// 上传图片名称 /// 上传类型 /// public static string GeneratePresignedUri(this AliyunOssConfig aliyunOssConfig, string objectName, string contentType) { if (aliyunOssConfig == null) { throw new NullReferenceException("AliyunOssConfig不能为空"); } // 创建OSSClient实例 var ossClient = new OssClient(aliyunOssConfig.EndPoint, aliyunOssConfig.AccessKeyId, aliyunOssConfig.AccessKeySecret); // 生成签名URL var generatePresignedUriRequest = new GeneratePresignedUriRequest(aliyunOssConfig.BucketName, objectName, SignHttpMethod.Put) { Expiration = DateTime.Now.AddHours(1), ContentType = contentType }; var signedUrl = ossClient.GeneratePresignedUri(generatePresignedUriRequest); return signedUrl.ToString(); } //public static AlibabaCloud.SDK.Dysmsapi20170525.Client CreateClient(this AliyunOssConfig aliyunOssConfig) //{ // // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 // // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378671.html。 // AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config // { // // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 // AccessKeyId = aliyunOssConfig.AccessKeyId, // // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // AccessKeySecret = aliyunOssConfig.AccessKeySecret, // }; // // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi // config.Endpoint = "dysmsapi.aliyuncs.com"; // return new AlibabaCloud.SDK.Dysmsapi20170525.Client(config); //} } }