115 lines
4.0 KiB
C#
115 lines
4.0 KiB
C#
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.Expand
|
||
{
|
||
public class AliyunOSSConfig
|
||
{
|
||
/// <summary>
|
||
/// id
|
||
/// </summary>
|
||
public string AccessKeyId { get; set; }
|
||
/// <summary>
|
||
///密钥
|
||
/// </summary>
|
||
public string AccessKeySecret { get; set; }
|
||
/// <summary>
|
||
/// 区域Url
|
||
/// </summary>
|
||
public string Region { get; set; }
|
||
/// <summary>
|
||
/// 筒域名
|
||
/// </summary>
|
||
public string BucketDomain { get; set; }
|
||
/// <summary>
|
||
/// 桶名称
|
||
/// </summary>
|
||
public string BucketName { get; set; }
|
||
public string Endpoint { get; set; } = "oss-cn-chengdu.aliyuncs.com";
|
||
}
|
||
|
||
/// <summary>
|
||
/// 阿里云 视频点播拓展
|
||
/// </summary>
|
||
public static class AliyunOSSExpand
|
||
{
|
||
/// <summary>
|
||
/// 使用阿里云 vod拓展
|
||
/// </summary>
|
||
/// <param name="service"></param>
|
||
/// <returns></returns>
|
||
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);
|
||
}
|
||
/// <summary>
|
||
/// 上传文件
|
||
/// </summary>
|
||
/// <param name="oss"></param>
|
||
/// <param name="fileArr">视频实体片段</param>
|
||
public static void AddVideoQuestionUrl(this OssClient oss, List<VideoQuestionOSSDto> fileArr)
|
||
{
|
||
var cached = new HashSet<string>();
|
||
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)
|
||
{
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|