9

我想用来Storage::put写一个文件。该文件可能非常大(> 100MB),所以我想利用一个流,所以我不会盲目地将所有内容放入内存中。

我将发出多个 API 请求,然后循环遍历它们的结果,因此我将要取回的数据不是问题,它将被限制在合理的数量范围内。

根据文档,我需要使用:

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

但是$resource这里会是什么?

传统上,在使用 PHP 编写文件时,我使用fopen,fwrite和的组合来完成它,fclose以便“逐行”编写。我正在通过循环遍历各种集合和使用各种 API 来构建文件,因此不是$resource文档中其他地方讨论的文件指针或文件引用。

那么,如何使用流和 Laravel 逐行编写Storage

4

2 回答 2

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

但是这里有什么 $resource 呢?

$resource 是您准备通过代码写入磁盘的数据。

如果你想用循环编写文件,你必须使用Storage::append($file_name, $data);ljubadr 之前写的

我写了 $data 但你可以使用任何你想要的名称作为循环内的变量。

于 2017-11-07T10:13:13.097 回答
0

根据Laravel 5.3 文档,查看自动流式传输

如果您希望 Laravel 自动管理将给定文件流式传输到您的存储位置,您可以使用putFileorputFileAs 方法。此方法接受一个Illuminate\Http\FileIlluminate\Http\UploadedFile实例,并将自动将文件流式传输到您想要的位置:

您可以像这样使用流媒体上传文件

$file = $request->file('file');
$path = \Storage::putFile('photos', $file);

您的表单输入在哪里

<input type="file" name="file">
于 2017-10-18T19:59:31.433 回答