diff --git a/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs b/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
index 2d2adf11..9744c3a4 100644
--- a/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
+++ b/Admin.NET/Admin.NET.Core/Enum/ErrorCodeEnum.cs
@@ -553,6 +553,12 @@ public enum ErrorCodeEnum
[ErrorCodeItemMetadata("文件已存在")]
D8004,
+ ///
+ /// 无效的文件名
+ ///
+ [ErrorCodeItemMetadata("无效的文件名")]
+ D8005,
+
///
/// 已存在同名或同编码配置参数
///
diff --git a/Admin.NET/Admin.NET.Core/Service/File/Dto/FileInput.cs b/Admin.NET/Admin.NET.Core/Service/File/Dto/FileInput.cs
index f99e2515..fa712d89 100644
--- a/Admin.NET/Admin.NET.Core/Service/File/Dto/FileInput.cs
+++ b/Admin.NET/Admin.NET.Core/Service/File/Dto/FileInput.cs
@@ -16,14 +16,10 @@ public class PageFileInput : BasePageInput
///
public string FileName { get; set; }
- ///
- /// 文件路径
- ///
- public string FilePath { get; set; }
-
///
/// 文件后缀
///
+ ///
public string? Suffix { get; set; }
///
@@ -59,11 +55,13 @@ public class UploadFileInput
///
/// 文件类别
///
+ ///
public string FileType { get; set; }
///
/// 文件别名
///
+ ///
public string FileAlias { get; set; }
///
@@ -71,19 +69,10 @@ public class UploadFileInput
///
public bool IsPublic { get; set; } = false;
- ///
- /// 文件路径
- ///
- public string Path { get; set; }
-
- ///
- /// 文件保存路径
- ///
- public string SavePath { get; set; }
-
///
/// 允许格式:.jpeg.jpg.png.bmp.gif.tif
///
+ ///
public string AllowSuffix { get; set; }
}
@@ -105,25 +94,23 @@ public class UploadFileFromBase64Input
///
/// 文件类型( "image/jpeg",)
///
+ ///
public string ContentType { get; set; }
///
/// 文件类别
///
+ ///
public string FileType { get; set; }
///
/// 文件别名
///
+ ///
public string FileAlias { get; set; }
///
/// 是否公开
///
public bool IsPublic { get; set; } = false;
-
- ///
- /// 保存路径
- ///
- public string Path { get; set; }
}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs b/Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs
index 82221aea..a95487f8 100644
--- a/Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs
@@ -62,7 +62,6 @@ public class SysFileService : IDynamicApiController, ITransient
// 合并公开和私有并分页
return await _sysFileRep.Context.UnionAll(publicList, privateList)
.WhereIF(!string.IsNullOrWhiteSpace(input.FileName), u => u.FileName.Contains(input.FileName.Trim()))
- .WhereIF(!string.IsNullOrWhiteSpace(input.FilePath), u => u.FilePath.Contains(input.FilePath.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()) && !string.IsNullOrWhiteSpace(input.EndTime.ToString()),
u => u.CreateTime >= input.StartTime && u.CreateTime <= input.EndTime)
.OrderBy(u => u.CreateTime, OrderByType.Desc)
@@ -239,7 +238,9 @@ public class SysFileService : IDynamicApiController, ITransient
[DisplayName("上传文件")]
public async Task UploadFile([FromForm] UploadFileInput input)
{
- if (input.File == null) throw Oops.Oh(ErrorCodeEnum.D8000);
+ if (input.File == null || input.File.Length <= 0) throw Oops.Oh(ErrorCodeEnum.D8000);
+
+ if (input.File.FileName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) throw Oops.Oh(ErrorCodeEnum.D8005);
// 判断是否重复上传的文件
var sizeKb = input.File.Length / 1024; // 大小KB
@@ -281,8 +282,7 @@ public class SysFileService : IDynamicApiController, ITransient
//if (!VerifyFileExtensionName.IsSameType(file.OpenReadStream(), suffix)) throw Oops.Oh(ErrorCodeEnum.D8001);
// 文件存储位置
- var path = string.IsNullOrWhiteSpace(input.SavePath) ? _uploadOptions.Path : input.SavePath;
- path = path.ParseToDateTimeForRep();
+ var path = _uploadOptions.Path.ParseToDateTimeForRep();
var newFile = input.Adapt();
newFile.Id = YitIdHelper.NextId();
@@ -309,7 +309,7 @@ public class SysFileService : IDynamicApiController, ITransient
[DisplayName("上传头像")]
public async Task UploadAvatar([Required] IFormFile file)
{
- var sysFile = await UploadFile(new UploadFileInput { File = file, AllowSuffix = _imageType, SavePath = "upload/avatar" });
+ var sysFile = await UploadFile(new UploadFileInput { File = file, AllowSuffix = _imageType });
var sysUserRep = _sysFileRep.ChangeRepository>();
var user = await sysUserRep.GetByIdAsync(_userManager.UserId);
@@ -331,7 +331,7 @@ public class SysFileService : IDynamicApiController, ITransient
[DisplayName("上传电子签名")]
public async Task UploadSignature([Required] IFormFile file)
{
- var sysFile = await UploadFile(new UploadFileInput { File = file, AllowSuffix = _imageType, SavePath = "upload/signature" });
+ var sysFile = await UploadFile(new UploadFileInput { File = file, AllowSuffix = _imageType });
var sysUserRep = _sysFileRep.ChangeRepository>();
var user = await sysUserRep.GetByIdAsync(_userManager.UserId);
diff --git a/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs b/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
index 1aad5f52..3818a289 100644
--- a/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
@@ -721,7 +721,7 @@ public class SysTenantService : IDynamicApiController, ITransient
Directory.CreateDirectory(absoluteDirPath);
// 保存轮播图文件
- var sysFile = await _sysFileService.UploadFile(new UploadFileInput { File = file, FileType = "Carousel", SavePath = path });
+ var sysFile = await _sysFileService.UploadFile(new UploadFileInput { File = file, FileType = "Carousel" });
//// 保存轮播图配置
//sysFile.BelongId = tenant.Id;
diff --git a/Admin.NET/Admin.NET.Core/Service/Wechat/SysWxOpenService.cs b/Admin.NET/Admin.NET.Core/Service/Wechat/SysWxOpenService.cs
index ce0678f7..4bda9876 100644
--- a/Admin.NET/Admin.NET.Core/Service/Wechat/SysWxOpenService.cs
+++ b/Admin.NET/Admin.NET.Core/Service/Wechat/SysWxOpenService.cs
@@ -149,7 +149,7 @@ public class SysWxOpenService : IDynamicApiController, ITransient
if (wxUser == null)
throw Oops.Oh("未找到用户上传失败");
- var res = await _sysFileService.UploadFile(new UploadFileInput { File = input.File, FileType = input.FileType, Path = input.Path });
+ var res = await _sysFileService.UploadFile(new UploadFileInput { File = input.File, FileType = input.FileType });
wxUser.Avatar = res.Url;
await _sysOAuthUserRep.AsUpdateable(wxUser).IgnoreColumns(true).ExecuteCommandAsync();
diff --git a/Web/src/api-services/apis/sys-file-api.ts b/Web/src/api-services/apis/sys-file-api.ts
index d2e029f3..08f588b1 100644
--- a/Web/src/api-services/apis/sys-file-api.ts
+++ b/Web/src/api-services/apis/sys-file-api.ts
@@ -573,13 +573,11 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
* @param {string} [fileType]
* @param {string} [fileAlias]
* @param {boolean} [isPublic]
- * @param {string} [path]
- * @param {string} [savePath]
* @param {string} [allowSuffix]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- apiSysFileUploadFilePostForm: async (file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, path?: string, savePath?: string, allowSuffix?: string, options: AxiosRequestConfig = {}): Promise => {
+ apiSysFileUploadFilePostForm: async (file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, allowSuffix?: string, options: AxiosRequestConfig = {}): Promise => {
const localVarPath = `/api/sysFile/uploadFile`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -618,14 +616,6 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
localVarFormParams.append('IsPublic', isPublic as any);
}
- if (path !== undefined) {
- localVarFormParams.append('Path', path as any);
- }
-
- if (savePath !== undefined) {
- localVarFormParams.append('SavePath', savePath as any);
- }
-
if (allowSuffix !== undefined) {
localVarFormParams.append('AllowSuffix', allowSuffix as any);
}
@@ -923,14 +913,12 @@ export const SysFileApiFp = function(configuration?: Configuration) {
* @param {string} [fileType]
* @param {string} [fileAlias]
* @param {boolean} [isPublic]
- * @param {string} [path]
- * @param {string} [savePath]
* @param {string} [allowSuffix]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, path?: string, savePath?: string, allowSuffix?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
- const localVarAxiosArgs = await SysFileApiAxiosParamCreator(configuration).apiSysFileUploadFilePostForm(file, fileType, fileAlias, isPublic, path, savePath, allowSuffix, options);
+ async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, allowSuffix?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await SysFileApiAxiosParamCreator(configuration).apiSysFileUploadFilePostForm(file, fileType, fileAlias, isPublic, allowSuffix, options);
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
return axios.request(axiosRequestArgs);
@@ -1090,14 +1078,12 @@ export const SysFileApiFactory = function (configuration?: Configuration, basePa
* @param {string} [fileType]
* @param {string} [fileAlias]
* @param {boolean} [isPublic]
- * @param {string} [path]
- * @param {string} [savePath]
* @param {string} [allowSuffix]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, path?: string, savePath?: string, allowSuffix?: string, options?: AxiosRequestConfig): Promise> {
- return SysFileApiFp(configuration).apiSysFileUploadFilePostForm(file, fileType, fileAlias, isPublic, path, savePath, allowSuffix, options).then((request) => request(axios, basePath));
+ async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, allowSuffix?: string, options?: AxiosRequestConfig): Promise> {
+ return SysFileApiFp(configuration).apiSysFileUploadFilePostForm(file, fileType, fileAlias, isPublic, allowSuffix, options).then((request) => request(axios, basePath));
},
/**
*
@@ -1257,15 +1243,13 @@ export class SysFileApi extends BaseAPI {
* @param {string} [fileType]
* @param {string} [fileAlias]
* @param {boolean} [isPublic]
- * @param {string} [path]
- * @param {string} [savePath]
* @param {string} [allowSuffix]
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof SysFileApi
*/
- public async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, path?: string, savePath?: string, allowSuffix?: string, options?: AxiosRequestConfig) : Promise> {
- return SysFileApiFp(this.configuration).apiSysFileUploadFilePostForm(file, fileType, fileAlias, isPublic, path, savePath, allowSuffix, options).then((request) => request(this.axios, this.basePath));
+ public async apiSysFileUploadFilePostForm(file?: Blob, fileType?: string, fileAlias?: string, isPublic?: boolean, allowSuffix?: string, options?: AxiosRequestConfig) : Promise> {
+ return SysFileApiFp(this.configuration).apiSysFileUploadFilePostForm(file, fileType, fileAlias, isPublic, allowSuffix, options).then((request) => request(this.axios, this.basePath));
}
/**
*
diff --git a/Web/src/api-services/models/page-file-input.ts b/Web/src/api-services/models/page-file-input.ts
index 2753eec6..1a5213b6 100644
--- a/Web/src/api-services/models/page-file-input.ts
+++ b/Web/src/api-services/models/page-file-input.ts
@@ -90,14 +90,6 @@ export interface PageFileInput {
*/
fileName?: string | null;
- /**
- * 文件路径
- *
- * @type {string}
- * @memberof PageFileInput
- */
- filePath?: string | null;
-
/**
* 文件后缀
*
diff --git a/Web/src/api-services/models/sys-file-upload-file-body.ts b/Web/src/api-services/models/sys-file-upload-file-body.ts
index 66b0c22f..8996b70f 100644
--- a/Web/src/api-services/models/sys-file-upload-file-body.ts
+++ b/Web/src/api-services/models/sys-file-upload-file-body.ts
@@ -52,22 +52,6 @@ export interface SysFileUploadFileBody {
*/
isPublic?: boolean;
- /**
- * 文件路径
- *
- * @type {string}
- * @memberof SysFileUploadFileBody
- */
- path?: string;
-
- /**
- * 文件保存路径
- *
- * @type {string}
- * @memberof SysFileUploadFileBody
- */
- savePath?: string;
-
/**
* 允许格式:.jpeg.jpg.png.bmp.gif.tif
*
diff --git a/Web/src/api-services/models/upload-file-from-base64-input.ts b/Web/src/api-services/models/upload-file-from-base64-input.ts
index ffb1f5c5..c990762d 100644
--- a/Web/src/api-services/models/upload-file-from-base64-input.ts
+++ b/Web/src/api-services/models/upload-file-from-base64-input.ts
@@ -67,12 +67,4 @@ export interface UploadFileFromBase64Input {
* @memberof UploadFileFromBase64Input
*/
isPublic?: boolean;
-
- /**
- * 保存路径
- *
- * @type {string}
- * @memberof UploadFileFromBase64Input
- */
- path?: string | null;
}