Разница между SendToZip и C# CreateFromDirectory zipfile

Я использую RestSharp для отправки запроса POST, запрос POST содержит ZIP-файл вместе со следующими заголовками:

        request.AddParameter("username", this.username, ParameterType.GetOrPost);
        request.AddParameter("userid", this.userid, ParameterType.GetOrPost);
        request.AddParameter("projectid", this.projectid, ParameterType.GetOrPost);
        //add the file
        request.AddFile("os_serverpackage", this.filelocation);
        request.AlwaysMultipartFormData = true;

В C# я отправляю запрос синхронно.

Файл отправляется на сервер, мы видим, как он проходит, поэтому мы не думаем, что это проблема RestSharp.

Проблема, с которой мы сталкиваемся, заключается в том, что zip-файл неправильно обрабатывается нашим сервером (который является сервером с поддержкой узлов, созданным на компьютере с Ubuntu).

Поэтому мы считаем, что проблема в том, как мы используем библиотеки C# для создания zip-файла.

Проблема в том, что когда я отправляю тот же документ, что и zip-файл, созданный с помощью функции sendToZip на рабочем столе (windows), он работает. Однако, когда я создаю zip-файл с использованием собственного метода C. System.IO.Compression.ZipFile.CreateFromDirectory для создания zip-файла, сервер не отвечает.

Какая разница между двумя?

Я использую родной метод C# System.IO.Compression.ZipFile.CreateFromDirectory для создания zip-файла.

Мы не являемся экспертами в области zip и сжатия или использования.NET для сжатия файлов, но мы выполнили некоторые базовые действия по устранению неполадок Когда мы открываем один из этих zip-файлов на Mac (своего рода *nix-машине), созданный в результате сжатия.NET, мы сталкиваемся с проблемой, когда zip превращается в CPGZ, и все выглядит странно, как показано в этой ссылке. http://osxdaily.com/2013/02/13/open-zip-cpgz-file/.

Другой вариант, который у нас есть, это изменить способ, которым наш сервер узлов обрабатывает zip-файлы. Сервер на принимающей стороне POST-запроса использует adm-zip для распаковки zip-файла.

Есть ли у экспертов по сжатию какие-либо советы о том, как использовать эти библиотеки для обеспечения кроссплатформенности нашего zip-файла?

1 ответ

Сдается мне, что вам не хватает этого (предостережение: я не знаком с RestSharp):

request.AddHeader("Content-Type", "application/zip, application/octet-stream");

Я знаю, что серверы Linux, как правило, суетятся по поводу правильных HTTP-заголовков Content-Type, и если вы не установите их правильно, они не будут видны. По крайней мере, вы должны использовать что-то вроде Fiddler2, чтобы увидеть, правильно ли передаются ваши сообщения

Другие вопросы по тегам