using Aliyun.OSS; using IRaCIS.Core.Infrastructure; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using NPOI.HPSF; using SharpCompress.Common; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Security.AccessControl; using System.Text; using System.Threading.Tasks; namespace IRaCIS.Core.Application.Helper { public class AliyunOssOptions { public string RegionId { get; set; } public string AccessKeyId { get; set; } public string AccessKeySecret { get; set; } public string EndPoint { get; set; } public string BucketName { get; set; } public string RoleArn { get;set; } public string Region { get; set; } public string ViewEndpoint { get; set; } } public interface IOSSService { } public class OSSService : IOSSService { public AliyunOssOptions _OSSConfig { get; set; } public OssClient _ossClient { get; set; } public OSSService(IOptionsMonitor options) { var ossOptions = options.CurrentValue; _OSSConfig= ossOptions; //_OSSConfig = new AliyunOssOptions() //{ // RegionId = ossOptions.RegionId, // AccessKeyId = ossOptions.AccessKeyId, // AccessKeySecret = ossOptions.AccessKeySecret, // EndPoint = ossOptions.EndPoint, // BucketName = ossOptions.BucketName, // RoleArn = ossOptions.RoleArn, // Region = ossOptions.Region, // ViewEndpoint = ossOptions.ViewEndpoint //}; _ossClient = new OssClient(_OSSConfig.EndPoint, _OSSConfig.AccessKeyId, _OSSConfig.AccessKeySecret); } public string UploadToOSS(string localFilePath, string oosFolderPath) { var localFileName = Path.GetFileName(localFilePath); var ossRelativePath = oosFolderPath + "/" + localFileName; try { // 上传文件 var result = _ossClient.PutObject(_OSSConfig.BucketName, ossRelativePath, localFilePath); return ossRelativePath; } catch (Exception ex) { throw new BusinessValidationFailedException("oss上传失败" + ex.Message); } } public void DownLoadFromOSS(string ossRelativePath, string localFilePath) { try { var result = _ossClient.GetObject(_OSSConfig.BucketName, ossRelativePath); // 将下载的文件流保存到本地文件 using (var fs = File.OpenWrite(localFilePath)) { result.Content.CopyTo(fs); fs.Close(); } } catch (Exception ex) { throw new BusinessValidationFailedException("oss下载失败!" + ex.Message); } } } }