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

eqoofvh9  于 2023-03-07  发布在  PHP
关注(0)|答案(2)|浏览(154)

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行出现异常:已用尽允许的536870912字节内存大小(尝试分配377028088字节)。
我如何使用文档中指出的流功能?我如何从文件路径转到"PHP资源"?

lztngnrs

lztngnrs1#

PHP不允许上传这么大的文件,文档中指出的资源是PHP resource
下面是一个使用Intervention从外部图像URL创建图像的简单示例。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));
um6iljoc

um6iljoc2#

您可以使用fopen和将给予资源的文件的路径。

Storage::put('file.jpg', fopen($contentFilePath, 'r'));

相关问题