解决修改密码报错,根据文件id下载文件方法

This commit is contained in:
wenyongda 2025-06-11 19:33:24 +08:00
parent b092bbb817
commit 07a6c2af8a
2 changed files with 43 additions and 1 deletions

View File

@ -1,3 +1,4 @@
using NLog;
using SqlSugar; using SqlSugar;
using ZR.Admin.WebApi.Filters; using ZR.Admin.WebApi.Filters;
using ZR.ServiceCore.Model; using ZR.ServiceCore.Model;
@ -23,6 +24,8 @@ namespace ZR.Admin.WebApi.Controllers
{ {
_sysFileService = sysFileService; _sysFileService = sysFileService;
} }
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
/// <summary> /// <summary>
/// 查询文件存储列表 /// 查询文件存储列表
@ -129,5 +132,44 @@ namespace ZR.Admin.WebApi.Controllers
return NoContent(); return NoContent();
} }
} }
/// <summary>
/// 通过文件ID下载文件
/// </summary>
/// <param name="fileId"></param>
/// <returns></returns>
[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();
}
} }
} }

View File

@ -76,7 +76,7 @@ namespace ZR.Service
/// <returns></returns> /// <returns></returns>
public SysUser SelectUserById(long userId) 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(); .Where(f => f.UserId == userId).First();
if (user != null && user.UserId > 0) if (user != null && user.UserId > 0)
{ {