using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using AlibabaCloud.OpenApiClient.Models; using AlibabaCloud.SDK.Vod20170321; using AlibabaCloud.SDK.Vod20170321.Models; using AlibabaCloud.TeaUtil.Models; using Aliyun.OSS.Common; using Aliyun.OSS; using Microsoft.Extensions.DependencyInjection; using VideoAnalysisCore.Job; using VideoAnalysisCore.Model; using System.Security.AccessControl; using Aliyun.Credentials.Models; using VideoAnalysisCore.Model.Dto; using System.IO; namespace VideoAnalysisCore.Common { public class AliyunOSSConfig { /// /// id /// public string AccessKeyId { get; set; } /// ///密钥 /// public string AccessKeySecret { get; set; } /// /// 区域Url /// public string Region { get; set; } /// /// 筒域名 /// public string BucketDomain { get; set; } /// /// 桶名称 /// public string BucketName { get; set; } public string Endpoint { get; set; } = "oss-cn-chengdu.aliyuncs.com"; } /// /// 阿里云 视频点播拓展 /// public static class AliyunOSSExpand { /// /// 使用阿里云 vod拓展 /// /// /// public static void AddAliyunOSS(this IServiceCollection service) { Console.WriteLine($"{DateTime.Now}=>初始化 阿里云OSS"); AliyunOSSConfig config = new() { // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 AccessKeyId = AppCommon.Config.AliyunOSS.AccessKeyId, // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 AccessKeySecret = AppCommon.Config.AliyunOSS.AccessKeySecret, Endpoint = AppCommon.Config.AliyunOSS.Endpoint, Region= AppCommon.Config.AliyunOSS.Region, };// 创建ClientConfiguration实例,按照您的需要修改默认参数。 var conf = new ClientConfiguration(); // 设置v4签名。 conf.SignatureVersion = SignatureVersion.V4; // 创建OssClient实例。 var oss = new OssClient(config.Endpoint, config.AccessKeyId, config.AccessKeySecret, conf); oss.SetRegion(config.Region); service.AddSingleton(oss); } /// /// 上传文件 /// /// /// 视频实体片段 public static void AddVideoQuestionUrl(this OssClient oss, List fileArr ) { var cached = new HashSet(); foreach (var item in fileArr) { try { var path = item.VideoTaskId.ToString() + "/" + Path.GetFileName(item.FilePath); if (cached.Contains(item.FilePath)) { item.ImageUrl = AppCommon.Config.AliyunOSS.BucketDomain + "/" + path; continue; } using var file = File.OpenRead(item.FilePath); var result = oss .PutObject( AppCommon.Config.AliyunOSS.BucketName, path, file); item.ImageUrl = AppCommon.Config.AliyunOSS.BucketDomain + "/" + path; cached.Add(item.FilePath); continue; } catch (Exception) { } } } } }