如何从PUT请求中读取内容并在变量php中获取文件内容

时间:2012-01-27 01:33:57

标签: php fopen put

下面的

是我要修改的代码

 $input = fopen("php://input", "r");
        $temp = tmpfile();
        $realSize = stream_copy_to_stream($input, $temp);
        fclose($input);

        if ($realSize != $this->getSize()){            
            return false;
        }

        $target = fopen($path, "w");        
        fseek($temp, 0, SEEK_SET);
        stream_copy_to_stream($temp, $target);
        fclose($target);

我想将内容保存到内存中并将其传输到其他服务器而不将其保存在apache服务器上。

当我尝试输出内容时,我只看到资源ID#5。任何建议,评论都非常感激。感谢

2 个答案:

答案 0 :(得分:2)

您拥有的代码会打开文件句柄,这些句柄本身不是内容。要将内容放入变量,只需像读取任何其他文件一样阅读:

$put = file_get_contents('php://input');

答案 1 :(得分:2)

获取流的内容:

rewind($temp); // rewind the stream to the beginning
$contents = stream_get_contents($temp);
var_dump($contents);

或者,使用file_get_contents作为@deceze提及。


更新

我注意到你也在磁盘上打开临时文件。您可能需要考虑简化代码:

$put = stream_get_contents(STDIN); // STDIN is an open handle to php://input
if ($put) {
  $target = fopen('/storage/put.txt', "w");        
  fwrite($target, $put);
  fclose($target);
}