From 8cb3856a913d593bc875fba07c3e3459f566d640 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期五, 15 八月 2025 09:44:10 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
index 5a5b2d4..69ce7c8 100644
--- a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
+++ b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
@@ -4,6 +4,7 @@
 using Aliyun.Acs.Core.Profile;
 using Aliyun.OSS;
 using Furion;
+using Furion.DistributedIDGenerator;
 using Furion.HttpRemote;
 using Microsoft.AspNetCore.Http;
 using Microsoft.CodeAnalysis;
@@ -51,8 +52,12 @@
         /// <param name="url"></param>
         /// <param name="filename"></param>
         /// <returns></returns>
-        public static string Upload(string scene, string url, string filename = null)
+        public static AliyunOSSUploadResult Upload(string scene, string url, string filename = null)
         {
+            if (filename.IsNull())
+            {
+                filename = url.Substring(url.LastIndexOf('/') + 1);
+            }
             var stream = App.GetRequiredService<IHttpRemoteService>().GetAsStream(url);
             return Upload(scene, stream, filename);
         }
@@ -64,9 +69,10 @@
         /// <param name="file"></param>
         /// <param name="filename"></param>
         /// <returns></returns>
-        public static string Upload(string scene, IFormFile file, string filename = null)
+        public static AliyunOSSUploadResult Upload(string scene, IFormFile file, string filename = null)
         {
             var stream = file.OpenReadStream();
+            filename = filename ?? file.FileName;
             return Upload(scene, stream, filename);
         }
 
@@ -77,13 +83,20 @@
         /// <param name="stream"></param>
         /// <param name="filename"></param>
         /// <returns></returns>
-        public static string Upload(string scene, Stream stream, string filename = null)
+        public static AliyunOSSUploadResult Upload(string scene, Stream stream, string filename)
         {
             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}";
+            var key = $"Resource/FlexJob/{scene}/{DateTime.Now:yyyy-MM-dd}/{DateTime.Now.ToTimeStamp()}-{IDGen.NextID()}/{filename}";
             client.PutObject(options.BucketName, key, stream);
-            return key;
+            var result = new AliyunOSSUploadResult
+            {
+                Url = key
+            };
+            stream.Seek(0, SeekOrigin.Begin);
+            result.Buffer = new byte[stream.Length];
+            stream.ReadExactly(result.Buffer);
+            return result;
         }
 
         /// <summary>

--
Gitblit v1.9.1