Jelajahi Sumber

下载文件(文件流) 根据文件ID或者URL下载

Signed-off-by: skywolf627 <skywolf627@qq.com>
skywolf627 2 tahun lalu
induk
melakukan
0cb0bc72ac
1 mengubah file dengan 5 tambahan dan 5 penghapusan
  1. 5 5
      Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs

+ 5 - 5
Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs

@@ -1,4 +1,4 @@
-// 麻省理工学院许可证
+// 麻省理工学院许可证
 //
 // 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司  联系电话/微信:18020030720  QQ:515096995
 //
@@ -131,24 +131,24 @@ public class SysFileService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 下载文件(文件流)
+    /// 下载文件(文件流)  根据文件ID或者URL下载
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("下载文件(文件流)")]
     public async Task<IActionResult> DownloadFile(FileInput input)
     {
-        var file = await GetFile(input);
+        var file = input.Id > 0 ? await GetFile(input) : await _sysFileRep.GetFirstAsync(u => u.Url == input.Url);
         var fileName = HttpUtility.UrlEncode(file.FileName, Encoding.GetEncoding("UTF-8"));
         if (_OSSProviderOptions.IsEnable)
         {
-            var filePath = string.Concat(file.FilePath, "/", input.Id.ToString() + file.Suffix);
+            var filePath = string.Concat(file.FilePath, "/", file.Id.ToString() + file.Suffix);
             var stream = await (await _OSSService.PresignedGetObjectAsync(file.BucketName.ToString(), filePath, 5)).GetAsStreamAsync();
             return new FileStreamResult(stream.Stream, "application/octet-stream") { FileDownloadName = fileName + file.Suffix };
         }
         else
         {
-            var filePath = Path.Combine(file.FilePath, input.Id.ToString() + file.Suffix);
+            var filePath = Path.Combine(file.FilePath, file.Id.ToString() + file.Suffix);
             var path = Path.Combine(App.WebHostEnvironment.WebRootPath, filePath);
             return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName + file.Suffix };
         }