【问题标题】:Add zip to a http post request将 zip 添加到 http post 请求
【发布时间】:2014-12-16 21:26:12
【问题描述】:

如何将 zip 添加到发布请求 multipart/form-data 中?

上面上传了 zip,但是当我下载它时,它解压缩为 .cpgz,如果我解压它,它会创建一个 .zip,然后循环。

【问题讨论】:

  • 为什么要发布带有 txt 文件扩展名的 zip 文件?
  • 这段代码是用什么语言编写的?
  • 这是用 Powershell 编写的

标签: http multipart


【解决方案1】:

更改Content-Disposition 标头以指定与您要上传的文件的实际名称相匹配的filename。您还应该将Content-Type 设置为application/zip 或application/x-zip-compressed,以便服务器知道上传的数据是一个zip 文件。

$bytes = Get-Content "C:\Users\User\Test.zip" -Encoding Byte -ReadCount 0
$parameters = "
--$boundary
Content-Disposition: form-data; name=`"file`"; filename=`"Test.zip`"
Content-Type: application/x-zip-compressed
Content-Transfer-Encoding: binary

$bytes
--$boundary--"

【讨论】:

  • 我实施了您描述的更改,但仍然发生。我可以下载 zip,但它只是解压缩到原始文件中,创建了一个无限循环。这会是 $bytes 中的错误吗?所以我在 Content-Transfer 之后放置字节是正确的,还是应该是二进制的?这是我的二进制数据的示例:165 166 205 48 156 250 39 89
  • 您将字节放在正确的位置,但您显示的字节不是有效 zip 文件的起始字节。一个 zip 文件总是以 80 75 3 4 十进制 (50 4B 03 04 hex) 开头 - 一个 PK 签名,符合最初由 PKWARE 编写的 ZIP 格式规范。
  • 好的,如果它是有效的 zip 格式,为什么我下载它时会创建一个解压缩周期?我下载了Test.zip,它会解压到Test.zip.cpgz,它会解压到Test.zip,然后循环。如果我用windows打开它会说zip无效。
  • 这是一个无效文件,您的解压程序无法处理。谷歌搜索显示许多人在打开无效的 zip 文件时遇到了类似的问题。
  • 我发布请求正确的二进制文件,它以80 75 3 4 开头,但下载的zip 以56 48 32 55 开头这是否意味着服务器误解了我发送的内容?此外,我下载的 zip 几乎是我上传的文件的 4 倍。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 2017-04-30
  • 2017-02-15
相关资源
最近更新 更多