Скачать файлы Mutliple в формате ZIP - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу загрузить несколько файлов с разными ключами в виде пакета (.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 файл является предпочтительным выводом

1 Ответ

0 голосов
/ 02 апреля 2019

Это просто, вы создаете метод, который преобразует список файлов в 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 строка - это имя файла, а byte [] - это файл.Затем в вашем контроллере вы делаете что-то вроде этого:

public ActionResult returnZipFile()
{
    return this.File(this.GetZippedFileFromFileList(fileList), "application/zip", "myZippedFile.zip"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...