Commit 59ad934e authored by liudong1993's avatar liudong1993

小程序上传调整封装

parent 4933720f
......@@ -203,6 +203,12 @@ namespace Mall.Common
}
}
public static string GetAliOssFileUrl {
get {
return ReadConfigKey("AliFileSiteUrl");
}
}
/// <summary>
/// 获取Oss文件全路径
/// </summary>
......@@ -230,6 +236,33 @@ namespace Mall.Common
}
}
/// <summary>
/// 获取Oss文件全路径
/// </summary>
/// <param name="path">文件相对路径</param>
/// <returns></returns>
public static string GetAliFileUrl(string path)
{
if (string.IsNullOrWhiteSpace(path))
{
return null;
}
else
{
string p = @"(http|https)://(?<domain>[^(:|/]*)";
Regex reg = new Regex(p, RegexOptions.IgnoreCase);
string value = reg.Match(path).Value;
if (!string.IsNullOrEmpty(value))
{
return path;
}
else
{
return GetAliOssFileUrl + path;
}
}
}
/// <summary>
/// 获取文件相对路径
/// </summary>
......
......@@ -31,7 +31,7 @@ namespace Mall.Repository.BaseSetUp
{
builder.Append($" AND {nameof(RB_File_Store.TenantId)}={query.TenantId}");
}
if (query.TenantId > 0)
if (query.MallBaseId > 0)
{
builder.Append($" AND {nameof(RB_File_Store.MallBaseId)}={query.MallBaseId}");
}
......@@ -39,6 +39,10 @@ namespace Mall.Repository.BaseSetUp
{
builder.Append($" AND {nameof(RB_File_Store.StoreType)}={(int)query.StoreType}");
}
if (query.IsDefault > 0)
{
builder.Append($" AND {nameof(RB_File_Store.IsDefault)}={query.IsDefault}");
}
}
return Get<RB_File_Store>(builder.ToString()).ToList();
}
......
......@@ -39,37 +39,37 @@ namespace Mall.ThirdCore.Oss
/// 创建实例
/// </summary>
/// <returns></returns>
public static AliOssService Instance()
public static AliOssService Instance(string endpoint, string accessKeyId, string accessKeySecret, string bucketName)
{
JObject aliOss = Config.AliOss;
string endpoint = aliOss["endpoint"].ToString();
string accessKeyId = aliOss["accessKeyId"].ToString();
string accessKeySecret = aliOss["accessKeySecret"].ToString();
string bucketName = aliOss["bucketName"].ToString();
endpoint ??= aliOss["endpoint"].ToString();
accessKeyId ??= aliOss["accessKeyId"].ToString();
accessKeySecret ??= aliOss["accessKeySecret"].ToString();
bucketName ??= aliOss["bucketName"].ToString();
return new AliOssService(endpoint, accessKeyId, accessKeySecret, bucketName);
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="filePath">文件路径</param>
/// <param name="stream">文件流</param>
/// <returns></returns>
public OssResult UploadFile(string fileName, System.IO.Stream stream)
public OssResult UploadFile(string filePath, System.IO.Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
OssClient client = new OssClient(this.endpoint, this.accessKeyId, this.accessKeySecret);
OssResult result;
try
{
fileName = fileName.Substring(0, 1) == "/" ? fileName.TrimStart('/') : fileName;
System.IO.MemoryStream requestContent = new System.IO.MemoryStream(bytes);
client.PutObject(bucketName, fileName, requestContent);
string fileExtention = System.IO.Path.GetExtension(filePath);
string key = @"SaleBefore/Goods/" + DateTime.Now.Ticks.ToString() + fileExtention; //对象在存储桶中的位置,即称对象键
client.PutObject(bucketName, key, filePath);
result = new OssResult
{
resultCode = 1
resultCode = 1,
message = "上传成功",
data = "/" + key
};
}
catch (System.Exception ex)
......
......@@ -8,9 +8,18 @@ namespace Mall.ThirdCore.Oss
/// 创建上传实例
/// </summary>
/// <returns></returns>
public static IOssService Get()
public static IOssService GetTencent(string endpoint = null, string accessKeyId = null, string accessKeySecret = null, string bucketName = null)
{
return TencentOss.Instance();
return TencentOss.Instance(endpoint, accessKeyId, accessKeySecret, bucketName);
}
/// <summary>
/// 创建上传实例
/// </summary>
/// <returns></returns>
public static IOssService GetAli(string endpoint = null, string accessKeyId = null, string accessKeySecret = null, string bucketName = null)
{
return AliOssService.Instance(endpoint, accessKeyId, accessKeySecret, bucketName);
}
}
}
......@@ -40,12 +40,12 @@ namespace Mall.ThirdCore.Oss
/// 创建实例
/// </summary>
/// <returns></returns>
public static TencentOss Instance()
public static TencentOss Instance(string endpoint, string accessKeyId, string accessKeySecret, string bucketName)
{
string endpoint = "ap-chengdu";
string accessKeyId = "AKIDDPnbIzi8C1eqEOPP8dw6MNAg9H9ldDKd";
string accessKeySecret = "PdcLtOjslUzNFYdU4OSI1fKtdHpFT2Ob";
string bucketName = "viitto-1301420277";
endpoint ??= "ap-chengdu";
accessKeyId ??= "AKIDDPnbIzi8C1eqEOPP8dw6MNAg9H9ldDKd";
accessKeySecret ??= "PdcLtOjslUzNFYdU4OSI1fKtdHpFT2Ob";
bucketName ??= "viitto-1301420277";
return new TencentOss(endpoint, accessKeyId, accessKeySecret, bucketName);
}
......@@ -62,7 +62,7 @@ namespace Mall.ThirdCore.Oss
.SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms
.SetReadWriteTimeoutMs(40000) //设置读写超时时间,单位毫秒,默认45000ms
.IsHttps(true) //设置默认 HTTPS 请求
.SetAppid("1301420277") //设置腾讯云账户的账户标识 APPID
//.SetAppid("1301420277") //设置腾讯云账户的账户标识 APPID
.SetRegion(this.endpoint) //设置一个默认的存储桶地域
.Build();
......
......@@ -9,6 +9,9 @@ using Mall.WebApi.Filter;
using Mall.Common.API;
using Mall.Common.Plugin;
using Mall.ThirdCore.Oss;
using Mall.Module.BaseSetUp;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json.Linq;
namespace Mall.WebApi.Controllers.File
{
......@@ -18,6 +21,8 @@ namespace Mall.WebApi.Controllers.File
[EnableCors("AllowCors")]
public class FileController : ControllerBase
{
MallBaseModule mallBaseModule = new MallBaseModule();
/// <summary>
/// 上传文件到本地临时文件
/// </summary>
......@@ -138,16 +143,59 @@ namespace Mall.WebApi.Controllers.File
{
files[0].CopyTo(fstream);
}
IOssService ossService = OssService.Get();
OssResult result = ossService.UploadFile(path_server,null);
try
#region 查询后台文件存储配置
string q = Request.Query["MallBaseId"];
int MallBaseId = Convert.ToInt32(q == "" ? "0" : q);
bool IsDefault = true;
if (MallBaseId > 0)
{
System.IO.File.Delete(path_server);
var fileModel = mallBaseModule.GetFileStoreList(new Model.Entity.BaseSetUp.RB_File_Store { MallBaseId = MallBaseId, IsDefault = 1 }).FirstOrDefault();
if (fileModel != null) {
if (fileModel.StoreType == Common.Enum.MallBase.StoreTypeEnum.Tencent)
{
IsDefault = false;
IOssService ossService = OssService.GetTencent(fileModel.Region, fileModel.SecretId, fileModel.SecretKey, fileModel.Bucket);
OssResult result = ossService.UploadFile(path_server, null);
try
{
System.IO.File.Delete(path_server);
}
catch
{
}
return ApiResult.Success("", Common.Config.GetFileUrl(result.data.ToString()));
}
else if (fileModel.StoreType == Common.Enum.MallBase.StoreTypeEnum.Alicloud) {
IsDefault = false;
IOssService ossService = OssService.GetAli(fileModel.Region, fileModel.SecretId, fileModel.SecretKey, fileModel.Bucket);
OssResult result = ossService.UploadFile(path_server, null);
try
{
System.IO.File.Delete(path_server);
}
catch
{
}
return ApiResult.Success("", Common.Config.GetAliFileUrl(result.data.ToString()));
}
}
}
catch {
#endregion
if (IsDefault)
{
IOssService ossService = OssService.GetTencent();
OssResult result = ossService.UploadFile(path_server, null);
try
{
System.IO.File.Delete(path_server);
}
catch
{
}
return ApiResult.Success("", Common.Config.GetFileUrl(result.data.ToString()));
}
return ApiResult.Success("", Common.Config.GetFileUrl(result.data.ToString()));
return ApiResult.Failed();
}
catch (Exception ex)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment