【问题标题】:php: Retrieve binary file from POST requestphp:从 POST 请求中检索二进制文件
【发布时间】:2013-08-27 05:19:16
【问题描述】:

有没有办法检索二进制数据文件作为 POST 请求的响应发送?

即您在某个页面中自定义您的包,然后单击提交和 HTTP 服务器响应此带有 ZIP 存档的 POST 请求。

我知道我可以使用 cURL 发送 POST 请求,但接下来要做什么?如何找回这个文件?

谢谢

【问题讨论】:

  • 您尝试file_put_contents() 响应 curl 请求吗?
  • 不是 file_get_contents()?
  • 如果要保存,就是file_put_contents(把输出放到一个文件中)。

标签: php post download httprequest httpresponse


【解决方案1】:

使用 cURL 发送 POST 请求(我没有展示那部分代码,你说你知道怎么做)。返回的响应将是 ZIP 文件的内容。然后您可以将其保存在本地文件中,或将其发送给客户端;我在下面显示第一个选项。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
...
$result = curl_exec($ch);
file_put_contents("foo.zip", $result);

您也可以使用CURLOPT_FILE 选项直接写入文件,而不是先使用变量:

$fh = fopen("foo.zip", "w");
curl_setopt($ch, CURLOPT_FILE, $fh);
close($fh);

【讨论】:

  • 您如何在 AJAX 调用的成功函数中捕获此附件?
  • @cars10 你不会的。这旨在作为对正常表单提交的响应。然后浏览器会弹出一个文件保存对话框。
  • 啊,如果您(在本例中为 我)正确阅读问题,生活会变得如此轻松! ;-))
  • 不不不,我不是这个意思。我知道,如果 MY SERVER 不会向客户端提供 serv 文件,那么是 - 这是一个很好的答案。但是另一台服务器正在将文件作为附件发送到我的服务器,我不想到我的服务器下载它。
  • 是要下载到服务器本地,还是发回原来的客户端?
【解决方案2】:

一种解决方案可能是让服务器将此 Zip 存档放在一起,然后将 Post 响应中的链接发回。

【讨论】:

  • 嗯,这是假设 POST 用于 AJAX 请求。所以……算了吧! ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多