如何使用资源逐行编写但仍使用Laravel内置的存储?

时间:2017-10-17 16:16:06

标签: php laravel laravel-5.3 flysystem

我想使用{ "summary": "Event Last Day of the Month", "recurrence": [ "RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1;WKST=MO" ], "start": { "dateTime": "2017-08-31T6:00:00", "timeZone": "timeZone" }, "end": { "dateTime": "2017-08-31T7:00:00", "timeZone": "timeZone" } } 来编写文件。该文件可能非常大(> 100MB),所以我想利用一个流,所以我不要盲目地将所有内容放入内存。

我将要发出多个API请求,然后循环查看结果,因此我要回来的数据不是问题,它只限于合理的金额。

根据documentation,我需要使用:

Storage::put

Storage::put('file.xml', $resource); 会在这里?

传统上,当使用PHP编写文件时,我使用$resourcefopenfwrite的组合来完成,以便逐行编写'。我通过循环遍历各种集合并使用各种AP​​I来构建文件,因此fclose NOT 文件指针或文件引用,正如在其他地方所讨论的那样。文档。

那么,如何使用流和Laravel' $resource逐行编写?

2 个答案:

答案 0 :(得分:2)

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

但是$资源会在这里?

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

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

我写了$ data但你可以在循环中使用你想要的任何名字。

答案 1 :(得分:0)

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

  

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

您可以像这样上传带有流媒体的文件

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

您的表单输入

<input type="file" name="file">