【问题标题】:Laravel - Passing a PHP resource to Storage::putLaravel - 将 PHP 资源传递给 Storage::put
【发布时间】:2016-07-28 18:43:23
【问题描述】:

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 资源”?

【问题讨论】:

    标签: php laravel flysystem


    【解决方案1】:

    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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 2015-01-25
      • 2018-08-05
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      相关资源
      最近更新 更多