我想批量下载具有不同密钥的多个文件(.zip),例如,我具有密钥file1(abc.txt),file2(xyz.pdf)和file3(qwe.png),我想下载abc .txt和qwe.png使用它们各自的密钥,但都一起以zip格式保存。
我正在尝试使用MVC5控制器C#来实现。
这是一个文件。我要一次处理多个文件。
using (client = new AmazonS3Client(AWSCredentials, RegionEndPoint)) {
GetObjectRequest request = new GetObjectRequest {
BucketName = existingBucketName,
Key = newFileName
};
using (GetObjectResponse response = client.GetObject(request)) {
byte[] buffer = ReadFully(response.ResponseStream);
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.AddHeader("content-disposition", "attachment; filename=" + newFileName);
}
}
.zip文件是首选输出
答案 0 :(得分:0)
创建一个将文件列表转换为zip文件的方法很容易。
public byte[] GetZippedFileFromFileList(List<KeyValuePair<string, byte[]>> fileList)
{
using (MemoryStream zipStream = new MemoryStream())
{
using (ZipArchive zip = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
foreach (var file in fileList)
{
var zipEntry = zip.CreateEntry(file.Key);
using (var writer = new StreamWriter(zipEntry.Open()))
{
new MemoryStream(file.Value).WriteTo(writer.BaseStream);
}
}
}
return zipStream.ToArray();
}
}
在我的参数fileList中,字符串是文件名,字节[]是文件。 然后在您的控制器中执行以下操作:
public ActionResult returnZipFile()
{
return this.File(this.GetZippedFileFromFileList(fileList), "application/zip", "myZippedFile.zip"));
}