From 07a6c2af8a458610090d8fcc140932b225e078bb Mon Sep 17 00:00:00 2001 From: wenyongda Date: Wed, 11 Jun 2025 19:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BF=AE=E6=94=B9=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E6=8A=A5=E9=94=99=EF=BC=8C=E6=A0=B9=E6=8D=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6id=E4=B8=8B=E8=BD=BD=E6=96=87=E4=BB=B6=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/System/SysFileController.cs | 42 +++++++++++++++++++ ZR.ServiceCore/Services/SysUserService.cs | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/ZR.Admin.WebApi/Controllers/System/SysFileController.cs b/ZR.Admin.WebApi/Controllers/System/SysFileController.cs index 9476742..8bd04f6 100644 --- a/ZR.Admin.WebApi/Controllers/System/SysFileController.cs +++ b/ZR.Admin.WebApi/Controllers/System/SysFileController.cs @@ -1,3 +1,4 @@ +using NLog; using SqlSugar; using ZR.Admin.WebApi.Filters; using ZR.ServiceCore.Model; @@ -23,6 +24,8 @@ namespace ZR.Admin.WebApi.Controllers { _sysFileService = sysFileService; } + + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); /// /// 查询文件存储列表 @@ -129,5 +132,44 @@ namespace ZR.Admin.WebApi.Controllers return NoContent(); } } + + /// + /// 通过文件ID下载文件 + /// + /// + /// + [HttpGet("download/{fileId}")] + public IActionResult Download([FromRoute] long fileId) + { + var sysFile = _sysFileService.Queryable().Where(it => it.Id == fileId).First(); + if (sysFile == null) + { + throw new CustomException("服务器上不存在此文件"); + } + + Stream? stream; + switch ((StoreType)Enum.Parse(typeof(StoreType), sysFile.StoreType.ToString() ?? string.Empty)) + { + case StoreType.LOCAL: + Logger.Info("本地存储"); + stream = sysFile.IsEncrypted == "1" ? _sysFileService.DecryptSysFileStream(sysFile.FileUrl) + : new FileStream(sysFile.FileUrl, FileMode.Open); + break; + case StoreType.ALIYUN: + stream = AliyunOssHelper.DownloadFile(sysFile.FileUrl, "", sysFile.IsEncrypted == "1"); + break; + default: + throw new CustomException("不支持的存储类型"); + } + if (stream != null) + { + return new FileStreamResult(stream, "application/octet-stream") + { + FileDownloadName = sysFile.RealName + }; + } + + return NoContent(); + } } } \ No newline at end of file diff --git a/ZR.ServiceCore/Services/SysUserService.cs b/ZR.ServiceCore/Services/SysUserService.cs index 6ffe5bb..67a4d7a 100644 --- a/ZR.ServiceCore/Services/SysUserService.cs +++ b/ZR.ServiceCore/Services/SysUserService.cs @@ -76,7 +76,7 @@ namespace ZR.Service /// public SysUser SelectUserById(long userId) { - var user = Queryable().Filter(null, true).WithCache(60 * 5) + var user = Queryable().Filter(null, true) .Where(f => f.UserId == userId).First(); if (user != null && user.UserId > 0) {