Laravel - 将PHP资源传递给Storage :: put

时间:2016-07-26 16:31:01

标签: php laravel flysystem

Laravel文档(https://laravel.com/docs/5.2/filesystem#storing-files)声明:

  

存储档案

  put方法可用于在磁盘上存储文件。您还可以将PHP资源传递给put方法,该方法将使用Flysystem的底层流支持。在处理大文件时,强烈建议使用流:

      Storage::put('file.jpg', $contents);

      Storage::put('file.jpg', $resource);

我希望保存一个大于我的php内存限制(512MB)的文件,所以当我这样做时,我收到内存错误:

  

Local.php第128行中的FatalErrorException:允许的内存大小为536870912字节耗尽(尝试分配377028088字节)。

如何使用文档中指示的流功能?如何从文件路径转到“PHP资源”?

1 个答案:

答案 0 :(得分:2)

PHP不允许您上传具有该大小的文件。文档中指出的资源就是这种PHP resource

以下是使用Intervention从外部图片网址创建图片的简单示例。 Intervention库使用GD库,它位于PHP资源列表下。

$image = Image::make('Your Extenal URL')->stream();
Storage::put('image_name.jpg', $image->getContents());   

在您的情况下,这是上传文件的示例代码。

$file = Request::file('file_field');
Storage::put($file->getClientOriginalName(), File::get($file));