From 5856a6e5de198436bc112923609db21c9a45fd10 Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期二, 01 七月 2025 15:58:42 +0800
Subject: [PATCH] 增加公司收藏工人的功能
---
cylsg/EzUpFile/EzFileUploadService.cs | 247 +++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 235 insertions(+), 12 deletions(-)
diff --git a/cylsg/EzUpFile/EzFileUploadService.cs b/cylsg/EzUpFile/EzFileUploadService.cs
index e48e3c8..568e928 100644
--- a/cylsg/EzUpFile/EzFileUploadService.cs
+++ b/cylsg/EzUpFile/EzFileUploadService.cs
@@ -1,5 +1,7 @@
锘�
+using Aliyun.Acs.Core.Exceptions;
using Aliyun.OSS;
+
using Aliyun.OSS.Util;
using cylsg.utility;
using cylsg.utility.Extend;
@@ -10,14 +12,16 @@
using Microsoft.AspNetCore.Http;
using SqlSugar;
-using System;
-using System.Buffers.Text;
using System.Drawing;
using System.Globalization;
-using System.Security.Policy;
+using System.Security.Cryptography;
+using System.Text;
+using Tea;
using TencentCloud.Ocr.V20181119.Models;
-using TencentCloud.Teo.V20220901.Models;
+
using Task = System.Threading.Tasks.Task;
+using Newtonsoft.Json;
+using static AlibabaCloud.SDK.Sts20150401.Models.AssumeRoleResponseBody;
namespace EzUpFile
{
/// <summary>
@@ -29,12 +33,12 @@
private readonly HttpRequest? _request;
private readonly ISqlSugarClient _sqlSugarClient;
private readonly ITencentCloudService _tcs;
- public EzFileUploadService(IHttpContextAccessor httpContext, ISqlSugarClient sqlSugarClient,ITencentCloudService tencentCloudService)
+ public EzFileUploadService(IHttpContextAccessor httpContext, ISqlSugarClient sqlSugarClient, ITencentCloudService tencentCloudService)
{
_request = httpContext.HttpContext?.Request ?? null;
_sqlSugarClient = sqlSugarClient;
- _tcs= tencentCloudService;
+ _tcs = tencentCloudService;
}
/// <summary>
@@ -178,7 +182,7 @@
throw Oops.Oh(ex.Message);
}
- //杩斿洖缁橴Editor鐨勬彃鍏ョ紪杈戝櫒鐨勫浘鐗囩殑src
+
return App.Configuration["FileUploadOptions:AliOSSSaveBaseUrl"] + filePath;
}
@@ -349,7 +353,7 @@
catch (Exception e)
{
- throw Oops.Oh(e.Message+"鑵捐浜戯紝鎴栬�呴樋閲屼簯鎿嶄綔閿欒");
+ throw Oops.Oh(e.Message + "鑵捐浜戯紝鎴栬�呴樋閲屼簯鎿嶄綔閿欒");
}
}
catch (Exception e)
@@ -426,7 +430,7 @@
}
- public async Task<(bool,string)> IaiAddPerso(string CoredID,string Name,int PersonGender)
+ public async Task<(bool, string)> IaiAddPerso(string CoredID, string Name, int PersonGender)
{
try
{
@@ -466,12 +470,12 @@
var arr = ms.ToArray();
string img64 = Convert.ToBase64String(arr);
- bool info = false;
+ bool info = false;
string url = "";
try
{
- info = _tcs.IaiAddPerso(img64, CoredID, Name, PersonGender);
+ info = _tcs.IaiAddPerso(img64, CoredID, Name, PersonGender);
url = await UploadFilesFByBase64(img64);
@@ -490,7 +494,7 @@
throw Oops.Oh(e.Message);
}
}
-/// <inheritdoc/>
+ /// <inheritdoc/>
public async Task<(bool, string)> IaiAddPerso(string imgBase64, string CoredID, string Name, int PersonGender)
{
@@ -527,5 +531,224 @@
#endregion
+
+ #region 鏈湴涓婁紶浜戞湇鍔″櫒鍑瘉璁$畻
+
+
+ public Dictionary<string, string> GetToken1()
+ {
+
+ var dir = DateTime.Now.ToString("yyyyMMdd") + "/";
+ // 鏋勯�燨ssClient瀹炰緥銆� endpoint 鏍煎紡:https://oss-cn-beijing.aliyuncs.com
+ // var ossClient = new OssClient( App.Configuration["FileUploadOptions:AliOSSSaveBaseUrl"], App.Configuration["FileUploadOptions:AliOSSAccessKeyID"], App.Configuration["FileUploadOptions:AliOSSAccessKeySecret"]);
+ var rt = GetSTSToken();
+
+
+
+
+ String securityToken = rt.AccessKeySecret; //鑾峰彇Token
+ var config = new PolicyConditions();
+
+ config.AddConditionItem(PolicyConditions.CondContentLengthRange, 1, 1024L * 1024 * 1024 * 5);// 鏂囦欢澶у皬鑼冨洿锛氬崟浣峛yte
+ config.AddConditionItem(MatchMode.StartWith, PolicyConditions.CondKey, dir);
+ //鎹呭悕
+ config.AddConditionItem("bucket", App.Configuration["FileUploadOptions:AliOSSBucketName"]);
+ config.AddConditionItem("x-oss-signature-version", "OSS4-HMAC-SHA256");
+ config.AddConditionItem("x-oss-security-token", securityToken);
+ // //璇锋眰鏃堕棿
+ config.AddConditionItem("x-oss-date", DateTime.Now.ToString("yyyyMMdd'T'HHmmss'Z'"));
+ config.AddConditionItem("x-oss-credential", App.Configuration["FileUploadOptions:AliOSSAccessKeyID"] + "/" + DateTime.Now.ToString("yyyyMMdd") + "/cn-chengdu/oss/aliyun_v4_request");
+ var expire = DateTimeOffset.Now.AddMinutes(30);// 杩囨湡鏃堕棿
+
+ // 鐢熸垚 Policy锛屽苟杩涜 Base64 缂栫爜
+ // var policy = ossClient.GeneratePostPolicy(expire.LocalDateTime, config);
+ // var policyBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(policy));
+
+ // 璁$畻绛惧悕
+ var hmac = new HMACSHA1(Encoding.UTF8.GetBytes(App.Configuration["FileUploadOptions:AliOSSAccessKeySecret"]));
+ // var bytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(policyBase64));
+ // var sign = Convert.ToBase64String(bytes);
+
+ return new Dictionary<string, string>();
+ }
+
+
+
+
+
+
+ public static AlibabaCloud.SDK.Sts20150401.Client CreateClient()
+ {
+ // 宸ョ▼浠g爜娉勯湶鍙兘浼氬鑷� AccessKey 娉勯湶锛屽苟濞佽儊璐﹀彿涓嬫墍鏈夎祫婧愮殑瀹夊叏鎬с�備互涓嬩唬鐮佺ず渚嬩粎渚涘弬鑰冦��
+ // 寤鸿浣跨敤鏇村畨鍏ㄧ殑 STS 鏂瑰紡锛屾洿澶氶壌鏉冭闂柟寮忚鍙傝锛歨ttps://help.aliyun.com/document_detail/378671.html銆�
+ AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
+ {
+ // 蹇呭~锛岃纭繚浠g爜杩愯鐜璁剧疆浜嗙幆澧冨彉閲� ALIBABA_CLOUD_ACCESS_KEY_ID銆�
+ AccessKeyId = "LTAI5tKegnEbaSRPFRwDxeFd",
+ // 蹇呭~锛岃纭繚浠g爜杩愯鐜璁剧疆浜嗙幆澧冨彉閲� ALIBABA_CLOUD_ACCESS_KEY_SECRET銆�
+ AccessKeySecret = "9Hv6VYgWhpDHCMkwMLHiqF6ihusjdl",
+ };
+ // Endpoint 璇峰弬鑰� https://api.aliyun.com/product/Sts
+ config.Endpoint = "sts.cn-chengdu.aliyuncs.com";
+ return new AlibabaCloud.SDK.Sts20150401.Client(config);
+ }
+
+ /// <summary>
+ /// 鑾峰彇涓存椂鍑瘉
+ /// </summary>
+ public static AssumeRoleResponseBodyCredentials GetSTSToken()
+ {
+ AlibabaCloud.SDK.Sts20150401.Client client = CreateClient();
+ AlibabaCloud.SDK.Sts20150401.Models.AssumeRoleRequest assumeRoleRequest = new AlibabaCloud.SDK.Sts20150401.Models.AssumeRoleRequest
+ {
+ Policy = "{\"Statement\": [{\"Action\": [\"*\"],\"Effect\": \"Allow\",\"Resource\": [\"*\"]}],\"Version\":\"1\"}",
+ DurationSeconds = 3600,
+ RoleArn = "acs:ram::1299465997752835:role/weixinupdatarl",
+ RoleSessionName = "weixinupdataRl",
+ };
+ AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
+ try
+ {
+ // 澶嶅埗浠g爜杩愯璇疯嚜琛屾墦鍗� API 鐨勮繑鍥炲��
+ var data = client.AssumeRoleWithOptions(assumeRoleRequest, runtime);
+ if (data.StatusCode == 200)
+ {
+
+ return data.Body?.Credentials;
+ }
+ throw Oops.Oh("闃块噷浜戣幏鍙栦复鏃跺嚟璇侀敊璇�");
+ }
+ catch (TeaException error)
+ {
+
+ AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
+ throw;
+ }
+ catch (Exception _error)
+ {
+ TeaException error = new TeaException(new Dictionary<string, object>
+ {
+ { "message", _error.Message }
+ });
+
+ AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
+ throw error;
+ }
+ }
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public Dictionary<string, string> GetToken()
+ {
+ // 鑾峰彇鐜鍙橀噺
+
+ string regionId = "cn-chengdu";
+ string roleSessionName = "weixinupdataRl";
+
+
+
+
+
+
+
+ // 瀹氫箟STS涓存椂璁块棶鍑瘉鍙橀噺
+ string stsAccessKeyId = null;
+ string stsSecretAccessKey = null;
+ string securityToken = null;
+
+ try
+ {
+ var rt = GetSTSToken();
+
+ stsAccessKeyId = rt.AccessKeyId;
+ stsSecretAccessKey = rt.AccessKeySecret;
+ securityToken = rt.SecurityToken;
+ }
+ catch (ServerException e)
+ {
+ throw;
+ }
+ catch (ClientException e)
+ {
+ throw;
+ }
+
+ // 鏍煎紡鍖栬姹傛棩鏈�
+ DateTimeOffset now = DateTimeOffset.UtcNow;
+ string dtObj1 = now.ToString("yyyyMMdd'T'HHmmss'Z'", CultureInfo.InvariantCulture);
+ string dtObj2 = now.ToString("yyyyMMdd", CultureInfo.InvariantCulture);
+ string expirationTime = now.AddHours(3).ToString("yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture);
+
+ // 鍒涘缓policy
+ Dictionary<string, object> policy = new Dictionary<string, object>
+ {
+ { "expiration", expirationTime },
+ { "conditions", new List<object>
+ {
+ new Dictionary<string, string> { { "bucket", App.Configuration["FileUploadOptions:AliOSSBucketName"] } }, // 璇峰皢<bucketname>鏇挎崲涓烘偍鐨勫疄闄匓ucket鍚嶇О
+ new Dictionary<string, string> { { "x-oss-signature-version", "OSS4-HMAC-SHA256" } },
+ new Dictionary<string, string> { { "x-oss-credential", $"{stsAccessKeyId}/{dtObj2}/{regionId}/oss/aliyun_v4_request" } }, // 璇峰皢<cn-hangzhou>鏇挎崲涓烘偍鐨勫疄闄匓ucket鎵�澶勫湴鍩燂紝渚嬪鍖椾含鍦板煙涓猴細cn-beijing
+ new Dictionary<string, string> { { "x-oss-security-token", securityToken } },
+ new Dictionary<string, string> { { "x-oss-date", dtObj1 } }
+ }
+ }
+ };
+
+ string jsonPolicy = JsonConvert.SerializeObject(policy);
+
+ // 鏋勯�犲緟绛惧悕瀛楃涓诧紙StringToSign锛�
+ string stringToSign = Convert.ToBase64String(Encoding.UTF8.GetBytes(jsonPolicy));
+
+ // 璁$畻SigningKey
+ byte[] dateKey = HmacSha256("aliyun_v4" + stsSecretAccessKey, dtObj2);
+ byte[] dateRegionKey = HmacSha256(dateKey, regionId); // 璇峰皢<cn-hangzhou>鏇挎崲涓烘偍鐨勫疄闄匓ucket鎵�澶勫湴鍩燂紝渚嬪鍖椾含鍦板煙涓猴細cn-beijing
+ byte[] dateRegionServiceKey = HmacSha256(dateRegionKey, "oss");
+ byte[] signingKey = HmacSha256(dateRegionServiceKey, "aliyun_v4_request");
+
+ // 璁$畻Signature
+ byte[] result = HmacSha256(signingKey, stringToSign);
+ string signature = BitConverter.ToString(result).Replace("-", "").ToLower();
+
+ Dictionary<string, string> messageMap = new Dictionary<string, string>
+ {
+ { "security_token", securityToken },
+ { "signature", signature },
+ { "x_oss_date", dtObj1 },
+ { "x_oss_credential", $"{stsAccessKeyId}/{dtObj2}/{regionId}/oss/aliyun_v4_request" }, // 璇峰皢<cn-hangzhou>鏇挎崲涓烘偍鐨勫疄闄匓ucket鎵�澶勫湴鍩燂紝渚嬪鍖椾含鍦板煙涓猴細cn-beijing
+ { "x_oss_signature_version", "OSS4-HMAC-SHA256" },
+ { "policy", stringToSign }
+ };
+
+ // 鎵撳嵃杩斿洖鑷冲鎴风鐨勭鍚嶄俊鎭�
+ return messageMap;
+ }
+
+
+
+ private static byte[] HmacSha256(byte[] key, string message)
+ {
+ using (HMACSHA256 hmac = new HMACSHA256(key))
+ {
+ return hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
+ }
+ }
+
+ private static byte[] HmacSha256(string key, string message)
+ {
+ using (HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key)))
+ {
+ return hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
+ }
+ }
+
+
+
+ #endregion
}
+
+
+
+
}
+
--
Gitblit v1.9.1