1

我正在使用 PHP 来运行 web 服务。其中一个 url 需要从 POST 正文中获取几张图片。我目前使用 fopen/fread 解决方案:

$size1 = intval($_REQUEST['img1']);
$size2 = intval($_REQUEST['img2']);
$sizeToRead = 4096;
$datas1 = null;
$datas2 = null;

$h = fopen('php://input','r+');
while($size1 > 0) {
    if($sizeToRead > $size1)
        $sizeToRead = $size1;

    $datas1 .= fread($h,$sizeToRead);
    $size1 -= $sizeToRead;
}
fclose($h);

file_put_contents('received1.png',$datas1);
//Same thing for the second image

该解决方案工作正常,但我试图通过使用使其更具可读性file_get_contents()

file_put_contents('received1.png',file_get_contents('php://input',false,null,0,$size1));

但这给了我一个错误:

file_get_contents() 流不支持查找
file_get_contents() 在流中查找位置 21694 失败

这甚至可以在流中寻找吗?也许通过将第三个参数更改为其他参数?

如果没有,有没有办法让我的代码更优雅/高效?

谢谢。

4

1 回答 1

2

引用手册

注意:使用 php://input 打开的流只能读取一次;该流不支持查找操作。但是,根据 SAPI 实现,可能会打开另一个 php://input 流并重新开始读取。这只有在请求正文数据已保存时才有可能。通常,这是 POST 请求的情况,但不是其他请求方法,例如 PUT 或 PROPFIND。

(我的重点)

于 2013-03-15T14:57:13.760 回答