代码之家  ›  专栏  ›  技术社区  ›  Mike

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

  •  9
  • Mike  · 技术社区  · 8 年前

    我想使用 Storage::put 写入文件。该文件可能非常大(>100MB),因此我想利用流,这样我就不会盲目地将所有内容放入内存。

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

    根据 documentation

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

    但是会怎样呢 $resource 在这里吗?

    传统上,当使用PHP编写文件时,我使用以下方法组合完成 fopen , fwrite fclose 为了写“逐行”。我通过循环各种集合和使用各种API来构建文件,所以 $资源 不是 文档中其他地方提到的文件指针或文件引用。

    那么,我如何使用流和Laravel的 Storage ?

    2 回复  |  直到 8 年前
        1
  •  3
  •   Alviero    8 年前
    Storage::put('file.xml', $resource);
    

    但是这里会有什么资源呢?

    如果要使用循环写入文件,则必须使用 Storage::append($file_name, $data); 正如卢巴德之前所写

    我编写了$data,但您可以在循环中为变量使用任何名称。

        2
  •  0
  •   ljubadr    8 年前

    Laravel 5.3 documentation 调查

    如果您希望Laravel自动管理给定的流媒体 putFile putFileAs 方法此方法接受 Illuminate\Http\File Illuminate\Http\UploadedFile 实例并将自动流式处理 将文件发送到您想要的位置:

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

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

    表单输入的位置

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