Разделить zip-файл с помощью библиотеки DotNetZip - PullRequest
2 голосов
/ 09 июня 2011

Я использую DotNetZip Library для создания zip-файла размером около 100 МБ. Я сохраняю zip-файл непосредственно в Response.OutputStream

Response.Clear();
    // no buffering - allows large zip files to download as they are zipped
    Response.BufferOutput = false;
    String ReadmeText= "Dynamic content for a readme file...\n" + 
                       DateTime.Now.ToString("G");
    string archiveName= String.Format("archive-{0}.zip", 
                                      DateTime.Now.ToString("yyyy-MMM-dd-HHmmss")); 
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment; filename=" + archiveName);
    using (ZipFile zip = new ZipFile())
    {
        // add a file entry into the zip, using content from a string
        zip.AddFileFromString("Readme.txt", "", ReadmeText);
        // add the set of files to the zip
        zip.AddFiles(filesToInclude, "files");
        // compress and write the output to OutputStream
        zip.Save(Response.OutputStream);
    }
    Response.Close();

Мне нужно разделить этот файл размером 100 МБ примерно на 20 МБ и предоставить пользователю возможность загрузки. Как мне этого добиться?

1 Ответ

1 голос
/ 10 июня 2011

Ваш вопрос не зависит от формата ZIP.В основном кажется, что вы хотите сделать доступным для загрузки большой файл размером 100 МБ или более, и вы хотите сделать это по частям.Некоторые параметры:

  • Сохраните его в обычный файл, а затем передайте его по частям.Клиент должен будет сделать отдельный запрос на загрузку для каждой из N частей, выбрав соответствующий раздел файла с помощью заголовка HTTP Range .Сервер должен быть настроен на сервер ZIP-файлов с соответствующим типом MIME и т. Д.

  • сохранить его в split (spanned) zip-файле , что подразумеваетN разных файлов.Клиент тогда сделал бы HTTP GET для каждого отдельного файла.Сервер должен быть настроен на сервер .zip, .z00, .z01 и т. Д. Я не уверен, что встроенные инструменты ОС правильно обрабатывают разделенные zip-файлы.

  • сохраните файл как один большой двоичный объект и попросите клиента использовать BITS или другое перезапускаемое средство загрузки.

...