将二进制请求体保存为文件

时间:2014-03-17 08:56:19

标签: php save httprequest binaryfiles put

我编写了一个程序,它将二进制文件读入RAM,然后使用HTTP请求将其发送到我的服务器。它使用PUT方法,二进制文件是(in)正文。 现在,我如何告诉我的服务器接收并保护文件夹中的文件? 如果可能的话,我没有任何额外的库需要下载(除非它更有效) 我知道,这个有一些类似的线程,但是他们要么就是接收文本,要么就是用库来做这些,或者根本就没有足够的答案。

我也想知道,如果使用POST方法或任何其他方法而不是PUT更高效或更智能。

1 个答案:

答案 0 :(得分:0)

您可以通过打开php://输入流来获取数据,如下所示:

$datastr = fopen('php://input',rb);
if ($fp = fopen('outputfile.bin', "wb")){
    while(!feof($datastr)){
        fwrite($fp,fread($datastr,4096)) ;
    }
}

关于是否使用POST或其他任何内容取决于数据发生了什么,以及您是否关心RESTful等。见other questions/answers,indempotency。

使用POST时我会看到的优点是它更常用(在大多数提交表单中你上传文件),因此在PHP和HTML中有更多的支持。