以下是使用 Web API 实现上传和下载多个文件的代码示例:
上传多个文件:.
```c#
[Route("upload")]
[HttpPost]
public async Task<IActionResult> Upload(List<IFormFile> files)
{
// 遍历上传的文件列表
foreach (var file in files)
{
// 保存文件到本地
var filePath = Path.Combine("D:\\uploads", file.FileName);
using (var stream = System.IO.File.Create(filePath))
{
await file.CopyToAsync(stream);
}
}
return Ok("上传成功");
}
```
在上传多个文件的方法中,使用 List<IFormFile> 类型的参数来接收客户端上传的文件列表。遍历文件列表,保存每个文件到本地。在本例中,将文件保存到 D:\uploads 目录下。
下载多个文件:
```c#
[Route("download")]
[HttpGet]
public IActionResult Download()
{
// 获取要下载的文件列表
var filePaths = new List<string>
{
"D:\\uploads\\file1.txt",
"D:\\uploads\\file2.txt",
"D:\\uploads\\file3.txt"
};
// 压缩文件并下载
var archiveFilePath = "D:\\archives\\files.zip";
using (var archive = ZipFile.Open(archiveFilePath, ZipArchiveMode.Create))
{
foreach (var filePath in filePaths)
{
archive.CreateEntryFromFile(filePath, Path.GetFileName(filePath));
}
}
return PhysicalFile(archiveFilePath, "application/octet-stream", "files.zip");
}
```
在下载多个文件的方法中,使用 List<string> 类型的变量来存储要下载的文件列表。在本例中,要下载的文件列表包括 D:\uploads\file1.txt、D:\uploads\file2.txt 和 D:\uploads\file3.txt。使用 System.IO.Compression.ZipFile 类将文件压缩成 Zip 归档文件,并将归档文件作为响应体返回客户端。客户端可以通过浏览器或下载工具下载压缩文件。这里使用 PhysicalFile 方法来返回文件流,并设定返回的 MIME 类型为 application/octet-stream,表示二进制数据流。