From 9ead841625fd9cfd9dcc4098f97277dacf064882 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 14 八月 2025 09:23:29 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs |   72 ++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
index 43ad92f..e7b569a 100644
--- a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
+++ b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
@@ -2,13 +2,16 @@
 using Aliyun.Acs.Core.Auth.Sts;
 using Aliyun.Acs.Core.Http;
 using Aliyun.Acs.Core.Profile;
+using Aliyun.OSS;
 using Furion;
+using Furion.HttpRemote;
+using Microsoft.AspNetCore.Http;
+using Microsoft.CodeAnalysis;
+using Microsoft.Extensions.Options;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using System.Diagnostics;
+using System.IO;
 using System.Threading.Tasks;
-using static System.Runtime.InteropServices.JavaScript.JSType;
 
 namespace FlexJobApi.Core
 {
@@ -40,5 +43,66 @@
             };
             return result;
         }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="scene"></param>
+        /// <param name="url"></param>
+        /// <param name="filename"></param>
+        /// <returns></returns>
+        public static string Upload(string scene, string url, string filename = null)
+        {
+            var stream = App.GetRequiredService<IHttpRemoteService>().GetAsStream(url);
+            return Upload(scene, stream, filename);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="scene"></param>
+        /// <param name="file"></param>
+        /// <param name="filename"></param>
+        /// <returns></returns>
+        public static string Upload(string scene, IFormFile file, string filename = null)
+        {
+            var stream = file.OpenReadStream();
+            return Upload(scene, stream, filename);
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="scene"></param>
+        /// <param name="stream"></param>
+        /// <param name="filename"></param>
+        /// <returns></returns>
+        public static string Upload(string scene, Stream stream, string filename = null)
+        {
+            var options = App.GetOptions<AliyunOptions>().OSS;
+            var client = new OssClient(options.Endpoint, options.AccessKeyId, options.AccessSecret);
+            var key = $"Resource/{scene}/{DateTime.Now:yyyy-MM-dd}/{filename}";
+            client.PutObject(options.BucketName, key, stream);
+            return key;
+        }
+
+        /// <summary>
+        /// 鑾峰彇Url
+        /// </summary>
+        /// <param name="url"></param>
+        /// <param name="process"></param>
+        /// <returns></returns>
+        public static string GetUrl(string url, string process = null)
+        {
+            var options = App.GetOptions<AliyunOptions>().OSS;
+            var client = new OssClient(options.Endpoint, options.AccessKeyId, options.AccessSecret);
+            var req = new GeneratePresignedUriRequest(options.BucketName, url, SignHttpMethod.Get)
+            {
+                Expiration = DateTime.Now.AddHours(1),
+                Process = process
+            };
+            url = client.GeneratePresignedUri(req).ToString();
+            return url;
+        }
     }
 }

--
Gitblit v1.9.1