在.NET Core Web API中,你可以创建一个API端点来处理文件的下载,并将这些文件打包成一个ZIP归档文件(ArchiveZip)返回给客户端。这种功能通常用于提供多个文件的批量下载,以提高用户体验和减少服务器负载。
以下是一个使用.NET Core Web API实现文件下载并打包成ZIP归档的示例代码:
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.IO.Compression;
using System.Linq;
[ApiController]
[Route("[controller]")]
public class FileDownloadController : ControllerBase
{
private readonly string _fileDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Files");
[HttpGet("download")]
public IActionResult DownloadFiles()
{
var files = Directory.GetFiles(_fileDirectory).Select(Path.GetFileName).ToArray();
var memoryStream = new MemoryStream();
using (var archiveStream = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var file in files)
{
var filePath = Path.Combine(_fileDirectory, file);
var entry = archiveStream.CreateEntry(file);
using (var entryStream = entry.Open())
{
using (var fileStream = File.OpenRead(filePath))
{
fileStream.CopyTo(entryStream);
}
}
}
}
memoryStream.Position = 0;
return File(memoryStream, "application/zip", "download.zip");
}
}
通过以上方法,你可以实现一个高效且可靠的文件下载并打包成ZIP归档的API端点。
领取专属 10元无门槛券
手把手带您无忧上云