77using System . Threading . Tasks ;
88using Bing . AspNetCore . Uploads . Params ;
99using Bing . Exceptions ;
10+ using Bing . IO ;
1011using Microsoft . AspNetCore . Http ;
11- using FileInfo = Bing . Utils . Files . FileInfo ;
1212
1313namespace Bing . AspNetCore . Uploads
1414{
@@ -22,20 +22,16 @@ internal class DefaultFileUploadService : IFileUploadService
2222 /// </summary>
2323 /// <param name="param">参数</param>
2424 /// <param name="cancellationToken">取消令牌</param>
25- public async Task < FileInfo > UploadAsync ( SingleFileUploadParam param , CancellationToken cancellationToken = default ( CancellationToken ) )
25+ public async Task < FileDescriptor > UploadAsync ( SingleFileUploadParam param , CancellationToken cancellationToken = default ( CancellationToken ) )
2626 {
2727 if ( param . FormFile == null || param . FormFile . Length < 1 )
2828 {
2929 if ( param . Request . Form . Files != null && param . Request . Form . Files . Any ( ) )
30- {
3130 param . FormFile = param . Request . Form . Files [ 0 ] ;
32- }
3331 }
3432
3533 if ( param . FormFile == null || param . FormFile . Length < 1 )
36- {
3734 throw new Warning ( "请选择文件!" ) ;
38- }
3935
4036 return await SaveAsync ( param . FormFile , param . RelativePath , param . RootPath , cancellationToken ) ;
4137 }
@@ -47,7 +43,7 @@ internal class DefaultFileUploadService : IFileUploadService
4743 /// <param name="relativePath">相对路径</param>
4844 /// <param name="rootPath">根路径</param>
4945 /// <param name="cancellationToken">取消令牌</param>
50- private async Task < FileInfo > SaveAsync ( IFormFile formFile , string relativePath , string rootPath ,
46+ private async Task < FileDescriptor > SaveAsync ( IFormFile formFile , string relativePath , string rootPath ,
5147 CancellationToken cancellationToken = default ( CancellationToken ) )
5248 {
5349 var date = DateTime . Now ;
@@ -57,16 +53,18 @@ private async Task<FileInfo> SaveAsync(IFormFile formFile, string relativePath,
5753 var path = System . IO . Path . Combine ( relativePath , date . ToString ( "yyyy" ) , date . ToString ( "MM" ) ,
5854 date . ToString ( "dd" ) ) ;
5955 var id = Guid . NewGuid ( ) ;
60- var fileInfo = new FileInfo ( path , size , name , id . ToString ( ) ) ;
61- fileInfo . SaveName = $ "{ id . ToString ( ) . Replace ( "-" , "" ) } .{ fileInfo . Extension } ";
62-
63- var fullDir = System . IO . Path . Combine ( rootPath , fileInfo . Path ) ;
64- if ( ! Directory . Exists ( fullDir ) )
56+ var fileInfo = new FileDescriptor ( name , size )
6557 {
58+ Id = id . ToString ( ) ,
59+ DirectoryName = path ,
60+ } ;
61+ fileInfo . StorageName = $ "{ id . ToString ( ) . Replace ( "-" , "" ) } .{ fileInfo . Extension } ";
62+
63+ var fullDir = System . IO . Path . Combine ( rootPath , fileInfo . DirectoryName ) ;
64+ if ( ! Directory . Exists ( fullDir ) )
6665 Directory . CreateDirectory ( fullDir ) ;
67- }
6866
69- var fullPath = Path . Combine ( fullDir , fileInfo . SaveName ) ;
67+ var fullPath = Path . Combine ( fullDir , fileInfo . StorageName ) ;
7068 fileInfo . Md5 = await SaveWithMd5Async ( formFile , fullPath , cancellationToken ) ;
7169 return fileInfo ;
7270 }
@@ -76,7 +74,7 @@ private async Task<FileInfo> SaveAsync(IFormFile formFile, string relativePath,
7674 /// </summary>
7775 /// <param name="param">参数</param>
7876 /// <param name="cancellationToken">取消令牌</param>
79- public async Task < IEnumerable < FileInfo > > UploadAsync ( MultipleFileUploadParam param , CancellationToken cancellationToken = default ( CancellationToken ) )
77+ public async Task < IEnumerable < FileDescriptor > > UploadAsync ( MultipleFileUploadParam param , CancellationToken cancellationToken = default ( CancellationToken ) )
8078 {
8179 if ( param . FormFiles == null || ! param . FormFiles . Any ( ) )
8280 {
@@ -91,7 +89,7 @@ private async Task<FileInfo> SaveAsync(IFormFile formFile, string relativePath,
9189 throw new Warning ( "请选择文件!" ) ;
9290 }
9391
94- var tasks = new List < Task < FileInfo > > ( ) ;
92+ var tasks = new List < Task < FileDescriptor > > ( ) ;
9593 foreach ( var formFile in param . FormFiles )
9694 {
9795 tasks . Add ( SaveAsync ( formFile , param . RelativePath , param . RootPath , cancellationToken ) ) ;
@@ -140,14 +138,10 @@ public async Task<string> SaveWithMd5Async(IFormFile formFile, string savePath,
140138 private static string Md5 ( Stream stream )
141139 {
142140 if ( stream == null )
143- {
144141 return string . Empty ;
145- }
146142
147- using ( var md5Hash = MD5 . Create ( ) )
148- {
149- return BitConverter . ToString ( md5Hash . ComputeHash ( stream ) ) . Replace ( "-" , "" ) ;
150- }
143+ using var md5Hash = MD5 . Create ( ) ;
144+ return BitConverter . ToString ( md5Hash . ComputeHash ( stream ) ) . Replace ( "-" , "" ) ;
151145 }
152146 }
153147}
0 commit comments