using Aliyun.Credentials.Models; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; using System.Web; using Tea; namespace QYZH.InteractiveMagazine.Infrastructure.OSS { public class OssIMMService { private readonly AlibabaCloud.SDK.Imm20200930.Client _client; private readonly OSSOptions _oSSOptions; private readonly IConfiguration _configuration; public OssIMMService(IConfiguration configuration,IOptionsMonitor ossOptions) { this._configuration = configuration; _oSSOptions = ossOptions.CurrentValue; Config config = new Config() { Type = "access_key", AccessKeyId = _oSSOptions.AccessKeyID, AccessKeySecret = _oSSOptions.AccessKeySecret, }; Aliyun.Credentials.Client credential = new Aliyun.Credentials.Client(config); AlibabaCloud.OpenApiClient.Models.Config config1 = new AlibabaCloud.OpenApiClient.Models.Config { Credential = credential, }; // Endpoint 请参考 https://api.aliyun.com/product/imm config1.Endpoint = $"imm.cn-{_oSSOptions.Region}.aliyuncs.com"; _client = new AlibabaCloud.SDK.Imm20200930.Client(config1); } public string DocConvertPng(string source, string prefix) { var createOfficeConversionTaskRequest = new AlibabaCloud.SDK.Imm20200930.Models.CreateOfficeConversionTaskRequest { ProjectName = _oSSOptions.ProjectName, TargetType = "png", SourceURI = $"oss://{_oSSOptions.BucketName}/{HttpUtility.UrlDecode(source)}", TargetURIPrefix = $"oss://{_oSSOptions.BucketName}/{prefix}", //TargetURI = "oss://returnzero/output1/{dirname}/{barename}/{index}.{autoext}",//oss://examplebucket/outputprefix/ }; var runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { // 复制代码运行请自行打印 API 的返回值 var data = _client.CreateOfficeConversionTaskWithOptions(createOfficeConversionTaskRequest, runtime); if (data?.StatusCode == 200) { return data.Body.TaskId; } return null; } catch (Exception _error) { return null; } } public bool GetTask(string taskId) { AlibabaCloud.SDK.Imm20200930.Models.GetTaskRequest getTaskRequest = new() { ProjectName = _oSSOptions.ProjectName, TaskType = "OfficeConversion", TaskId = taskId, }; var runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions(); try { var data = _client.GetTaskWithOptions(getTaskRequest, runtime); if (data?.StatusCode == 200) { if (data.Body.Status == "Running") return GetTask(taskId); if (data.Body.Status == "Succeeded") return true; } return false; } catch (Exception _error) { TeaException error = new TeaException(new Dictionary { { "message", _error.Message } }); Console.WriteLine(error.Message); return false; } } } }