|
|
|
@@ -13,6 +13,7 @@ using System.Linq;
|
|
|
|
|
using System.Security.AccessControl;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
|
|
|
|
namespace IRaCIS.Core.SCP
|
|
|
|
|
{
|
|
|
|
@@ -37,6 +38,9 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
public string regionId { get; set; }
|
|
|
|
|
public string accessKeyId { get; set; }
|
|
|
|
|
public string accessKeySecret { get; set; }
|
|
|
|
|
|
|
|
|
|
public string internalEndpoint { get; set; }
|
|
|
|
|
|
|
|
|
|
public string endPoint { get; set; }
|
|
|
|
|
public string bucketName { get; set; }
|
|
|
|
|
|
|
|
|
@@ -93,7 +97,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
|
|
|
|
|
public interface IOSSService
|
|
|
|
|
{
|
|
|
|
|
public Task<string> UploadToOSSAsync(Stream fileStream, string oosFolderPath, string fileRealName,bool isFileNameAddGuid=true);
|
|
|
|
|
public Task<string> UploadToOSSAsync(Stream fileStream, string oosFolderPath, string fileRealName, bool isFileNameAddGuid = true);
|
|
|
|
|
public Task<string> UploadToOSSAsync(string localFilePath, string oosFolderPath, bool isFileNameAddGuid = true);
|
|
|
|
|
|
|
|
|
|
public Task DownLoadFromOSSAsync(string ossRelativePath, string localFilePath);
|
|
|
|
@@ -121,12 +125,12 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
/// <param name="fileStream"></param>
|
|
|
|
|
/// <param name="oosFolderPath"></param>
|
|
|
|
|
/// <param name="fileRealName"></param>
|
|
|
|
|
/// <param name="isFileNameAddGuid"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<string> UploadToOSSAsync(Stream fileStream, string oosFolderPath, string fileRealName, bool isFileNameAddGuid = true)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ossRelativePath = isFileNameAddGuid? $"{oosFolderPath}/{Guid.NewGuid()}_{fileRealName}": $"{oosFolderPath}/{fileRealName}";
|
|
|
|
|
var ossRelativePath = isFileNameAddGuid ? $"{oosFolderPath}/{Guid.NewGuid()}_{fileRealName}" : $"{oosFolderPath}/{fileRealName}";
|
|
|
|
|
//var ossRelativePath = $"{oosFolderPath}/{Guid.NewGuid()}_{fileRealName}";
|
|
|
|
|
//var ossRelativePath = oosFolderPath + "/" + fileRealName;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
@@ -144,7 +148,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
{
|
|
|
|
|
var aliConfig = ObjectStoreServiceOptions.AliyunOSS;
|
|
|
|
|
|
|
|
|
|
var _ossClient = new OssClient(aliConfig.endPoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
var _ossClient = new OssClient(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? aliConfig.endPoint : aliConfig.internalEndpoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -195,7 +199,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
throw new BusinessValidationFailedException($"上传发生异常:{ex.Message}"); ;
|
|
|
|
|
throw new BusinessValidationFailedException($"上传发生异常:{ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -218,7 +222,8 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
{
|
|
|
|
|
var localFileName = Path.GetFileName(localFilePath);
|
|
|
|
|
|
|
|
|
|
var ossRelativePath = isFileNameAddGuid? $"{oosFolderPath}/{Guid.NewGuid()}_{localFileName}" : $"{oosFolderPath}/{localFileName}";
|
|
|
|
|
var ossRelativePath = isFileNameAddGuid ? $"{oosFolderPath}/{Guid.NewGuid()}_{localFileName}" : $"{oosFolderPath}/{localFileName}";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//var ossRelativePath = oosFolderPath + "/" + localFileName;
|
|
|
|
|
|
|
|
|
@@ -227,7 +232,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
{
|
|
|
|
|
var aliConfig = ObjectStoreServiceOptions.AliyunOSS;
|
|
|
|
|
|
|
|
|
|
var _ossClient = new OssClient(aliConfig.endPoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
var _ossClient = new OssClient(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? aliConfig.endPoint : aliConfig.internalEndpoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
|
|
|
|
|
// 上传文件
|
|
|
|
|
var result = _ossClient.PutObject(aliConfig.bucketName, ossRelativePath, localFilePath);
|
|
|
|
@@ -273,6 +278,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task DownLoadFromOSSAsync(string ossRelativePath, string localFilePath)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
@@ -285,7 +291,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
{
|
|
|
|
|
var aliConfig = ObjectStoreServiceOptions.AliyunOSS;
|
|
|
|
|
|
|
|
|
|
var _ossClient = new OssClient(aliConfig.endPoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
var _ossClient = new OssClient(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? aliConfig.endPoint : aliConfig.internalEndpoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
|
|
|
|
|
// 上传文件
|
|
|
|
|
var result = _ossClient.GetObject(aliConfig.bucketName, ossRelativePath);
|
|
|
|
@@ -346,7 +352,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<string> GetSignedUrl(string ossRelativePath)
|
|
|
|
|
public async Task<string> GetSignedUrl(string ossRelativePath)
|
|
|
|
|
{
|
|
|
|
|
ossRelativePath = ossRelativePath.TrimStart('/');
|
|
|
|
|
try
|
|
|
|
@@ -357,7 +363,7 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
{
|
|
|
|
|
var aliConfig = ObjectStoreServiceOptions.AliyunOSS;
|
|
|
|
|
|
|
|
|
|
var _ossClient = new OssClient(aliConfig.endPoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
var _ossClient = new OssClient(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? aliConfig.endPoint : aliConfig.internalEndpoint, aliConfig.accessKeyId, aliConfig.accessKeySecret);
|
|
|
|
|
|
|
|
|
|
// 生成签名URL。
|
|
|
|
|
var req = new GeneratePresignedUriRequest(aliConfig.bucketName, ossRelativePath, SignHttpMethod.Get)
|
|
|
|
@@ -378,10 +384,6 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
.WithCredentials(minIOConfig.accessKey, minIOConfig.secretKey).WithSSL(minIOConfig.useSSL)
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
//var reqParams = new Dictionary<string, string>(StringComparer.Ordinal)
|
|
|
|
|
// {
|
|
|
|
|
// { "response-content-type", "application/json" }
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
var args = new PresignedGetObjectArgs()
|
|
|
|
|
.WithBucket(minIOConfig.bucketName)
|
|
|
|
@@ -407,7 +409,19 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
.WithCredentials(minIOConfig.accessKey, minIOConfig.secretKey).WithSSL(minIOConfig.useSSL)
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
return string.Empty;
|
|
|
|
|
var args = new PresignedGetObjectArgs()
|
|
|
|
|
.WithBucket(minIOConfig.bucketName)
|
|
|
|
|
.WithObject(ossRelativePath)
|
|
|
|
|
.WithExpiry(3600);
|
|
|
|
|
|
|
|
|
|
var presignedUrl = await minioClient.PresignedGetObjectAsync(args);
|
|
|
|
|
|
|
|
|
|
Uri uri = new Uri(presignedUrl);
|
|
|
|
|
|
|
|
|
|
string relativePath = uri.PathAndQuery;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return relativePath;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@@ -424,4 +438,5 @@ namespace IRaCIS.Core.SCP
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|