基于.net core api 接口返回文件流(批量打包多个文件生成zip)
防止多线程操作
上层代码如下
public class FileController : AbstractController
{
//合同文件服务接口
private readonly IContractFileService _contractFileService;
//构造函数注入服务
public FileController(IContractFileService contractFileService)
{
_contractFileService = contractFileService;
}
/// <summary>
/// 文件夹打包批量下载
/// </summary>
/// <param name="fileId">文件夹id</param>
/// <returns>返回zip压缩文件流</returns>
[ProducesResponseType(typeof(ContractFileEntity), 200)]
[HttpGet("packdownload/{fileId}")]
public async Task<FileResult> Packdownload([FromRoute] string fileId)
{
MemoryStream zipUrl = _contractFileService.Packdownload(fileId);
return File(zipUrl, "application/x-zip-compressed");
}
}
服务层的接口就放这儿了
public interface IContractFileService
{
MemoryStream Packdownload(string fileId);
}
然后下面是最底层(基于服务层接口的实现)
using System.IO;
using System.IO.Compression;
public class ContractFileServiceImpl : IContractFileService
{
public Me