PHP输入流返回0个数据-LARALV



我正在尝试在我的laravel 4项目中的表格上工作。客户端位迄今为止的工作原理,上传在2MB块中构成块,并且正在从浏览器发送数据。甚至有一个方便的进度栏以显示上传进度。

问题在PHP侧,因为我无法将上传流的内容写入磁盘。系统始终以创建0个字节文件结束。这个想法是将块附加到已经上传的文件到达时。

该项目建立在Laravel 4上,因此我不确定Laravel是否读取 php://input 流并对其做些事情。由于 php://Input 只能读取一次,因此可能意味着,到我的控制器实际上试图读取流时,它将是空的。

控制器看起来如下:

public function upload()
{
    $filename = Config::get('tms.upload_path') . Input::file('file')->getClientOriginalName();
    file_put_contents($filename, fopen('php://input', 'r'), FILE_APPEND);
}

文件正在创建,但长度始终保持在0字节。有什么想法我如何哄骗 php://Input 流的内容?

afaik fopen返回文件的指针,而不是流的指针,因此它可能不好作为file_put_contents的参数

您可以尝试使用此解决方法,而不是您的file_put_contents?

$putdata = fopen("php://input", "r");
$fp = fopen($filename, "a");
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);
fclose($fp);
fclose($putdata);

答案很简单,我需要关闭Multipart/form-data并使用 file_get_contents("php://input")读取内容,然后将结果传递给file_put_contents() So:

file_put_contents($filename, file_get_contents("php://input"), FILE_APPEND);

这有效并解决了我的问题。

相关内容

  • 没有找到相关文章

最新更新