我正在使用 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 问题。
我们遇到的问题是我们的服务器(这是一个建立在 ubuntu 机器上的节点支持的服务器)没有正确处理 zip 文件。
所以我们认为问题在于我们使用 C# 库创建 zip 文件的方式。
问题是当我发送与在桌面(Windows)上使用 sendToZip 功能创建的 zip 文件相同的文档时,它可以工作。但是,当我使用 C# 的本机 System.IO.Compression.ZipFile.CreateFromDirectory 方法创建 zip 以创建 zip 文件时,服务器无法响应。
两者有什么区别?
我正在使用 C# 的本机 System.IO.Compression.ZipFile.CreateFromDirectory 方法来创建 zip 文件。
我们不是 zip 和压缩方面的专家,也不是使用 .NET 压缩文件的专家,但我们已经完成了一些基本的故障排除。当我们在 Mac(某种 *nix 机器)上打开这些 zip 文件中的一个时,它源自我们的 .NET 压缩,我们遇到了一个问题,即 zip 变成了 CPGZ 并且事情看起来很奇怪,如此链接中所述http://osxdaily.com/2013/02/13/open-zip-cpgz-file/。
我们的另一个选择是更改节点服务器处理 zip 文件的方式。POST 请求接收端的服务器正在使用 adm-zip 提取 zip 文件。
是否有任何压缩专家对如何利用这些库来确保我们的 zip 文件跨平台工作有任何提示?