mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:53:25 +08:00
【新增】商品图集上传新增批量上传图片,后端通用上传方法新增并发线程限制。
This commit is contained in:
@@ -15,6 +15,7 @@ using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Aliyun.OSS;
|
||||
using Aliyun.OSS.Util;
|
||||
@@ -85,11 +86,10 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
private readonly IToolsServices _toolsServices;
|
||||
private readonly ICoreCmsReportsServices _reportsServices;
|
||||
private readonly ICoreCmsGoodsCategoryServices _goodsCategoryServices;
|
||||
|
||||
|
||||
|
||||
private readonly IWeChatApiHttpClientFactory _weChatApiHttpClientFactory;
|
||||
|
||||
private readonly SemaphoreSlim _semaphore;
|
||||
|
||||
/// <summary>
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
@@ -148,6 +148,9 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
_toolsServices = toolsServices;
|
||||
_reportsServices = reportsServices;
|
||||
_goodsCategoryServices = goodsCategoryServices;
|
||||
|
||||
//最多允许2个线程同时访问;
|
||||
_semaphore = new SemaphoreSlim(2);
|
||||
}
|
||||
|
||||
#region 获取登录用户用户信息(用于面板展示)====================================================
|
||||
@@ -370,63 +373,77 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
public async Task<AdminUiCallBack> UploadFiles()
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var filesStorageOptions = await _coreCmsSettingServices.GetFilesStorageOptions();
|
||||
|
||||
//初始化上传参数
|
||||
var maxSize = 1024 * 1024 * filesStorageOptions.MaxSize; //上传大小5M
|
||||
|
||||
var file = Request.Form.Files["file"];
|
||||
if (file == null)
|
||||
await _semaphore.WaitAsync();
|
||||
try
|
||||
{
|
||||
jm.msg = "请选择文件";
|
||||
return jm;
|
||||
var filesStorageOptions = await _coreCmsSettingServices.GetFilesStorageOptions();
|
||||
|
||||
//初始化上传参数
|
||||
var maxSize = 1024 * 1024 * filesStorageOptions.MaxSize; //上传大小5M
|
||||
|
||||
var file = Request.Form.Files["file"];
|
||||
if (file == null)
|
||||
{
|
||||
jm.msg = "请选择文件";
|
||||
return jm;
|
||||
}
|
||||
|
||||
var fileName = file.FileName;
|
||||
var fileExt = Path.GetExtension(fileName).ToLowerInvariant();
|
||||
|
||||
//检查大小
|
||||
if (file.Length > maxSize)
|
||||
{
|
||||
jm.msg = "上传文件大小超过限制,最大允许上传" + filesStorageOptions.MaxSize + "M";
|
||||
return jm;
|
||||
}
|
||||
|
||||
//检查文件扩展名
|
||||
if (string.IsNullOrEmpty(fileExt) ||
|
||||
Array.IndexOf(filesStorageOptions.FileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
|
||||
{
|
||||
jm.msg = "上传文件扩展名是不允许的扩展名,请上传后缀名为:" + filesStorageOptions.FileTypes;
|
||||
return jm;
|
||||
}
|
||||
|
||||
string url = string.Empty;
|
||||
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForLocalStorage(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.AliYunOSS.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForAliYunOSS(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForQCloudOSS(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForQiNiuKoDo(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
|
||||
var bl = !string.IsNullOrEmpty(url);
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "上传成功!" : "上传失败";
|
||||
jm.data = new
|
||||
{
|
||||
fileUrl = url,
|
||||
src = url
|
||||
};
|
||||
}
|
||||
|
||||
var fileName = file.FileName;
|
||||
var fileExt = Path.GetExtension(fileName).ToLowerInvariant();
|
||||
|
||||
//检查大小
|
||||
if (file.Length > maxSize)
|
||||
catch (Exception e)
|
||||
{
|
||||
jm.msg = "上传文件大小超过限制,最大允许上传" + filesStorageOptions.MaxSize + "M";
|
||||
return jm;
|
||||
jm.code = 1;
|
||||
jm.msg = "数据异常";
|
||||
jm.data = e;
|
||||
}
|
||||
|
||||
//检查文件扩展名
|
||||
if (string.IsNullOrEmpty(fileExt) || Array.IndexOf(filesStorageOptions.FileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1)
|
||||
finally
|
||||
{
|
||||
jm.msg = "上传文件扩展名是不允许的扩展名,请上传后缀名为:" + filesStorageOptions.FileTypes;
|
||||
return jm;
|
||||
_semaphore.Release(); // 释放访问
|
||||
}
|
||||
|
||||
string url = string.Empty;
|
||||
if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.LocalStorage.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForLocalStorage(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.AliYunOSS.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForAliYunOSS(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QCloudOSS.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForQCloudOSS(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
else if (filesStorageOptions.StorageType == GlobalEnumVars.FilesStorageOptionsType.QiNiuKoDo.ToString())
|
||||
{
|
||||
url = await _toolsServices.UpLoadFileForQiNiuKoDo(filesStorageOptions, fileExt, file);
|
||||
}
|
||||
|
||||
var bl = !string.IsNullOrEmpty(url);
|
||||
jm.code = bl ? 0 : 1;
|
||||
jm.msg = bl ? "上传成功!" : "上传失败";
|
||||
jm.data = new
|
||||
{
|
||||
fileUrl = url,
|
||||
src = url
|
||||
};
|
||||
|
||||
return jm;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user