Ich möchte Storage::put
verwenden, um eine Datei zu schreiben. Die Datei ist möglicherweise sehr groß (& gt; 100 MB), daher möchte ich einen Strom verwenden, damit ich nicht blind alles in den Speicher ablege.
Ich werde mehrere API-Anfragen stellen und dann ihre Ergebnisse durchgehen, so dass die Daten, die ich zurückbekomme, kein Problem darstellen, sondern auf sinnvolle Mengen beschränkt sind.
Laut der Dokumentation muss ich Folgendes verwenden:
%Vor% Aber was wäre $resource
hier?
Traditionell habe ich beim Schreiben von Dateien mit PHP eine Kombination aus fopen
, fwrite
und fclose
erstellt, um "Zeile für Zeile" zu schreiben. Ich baue die Datei auf, indem ich verschiedene Collections durchlaufen und verschiedene APIs benutze, so dass $resource
NOT ein Dateizeiger oder eine Dateireferenz ist, wie an anderer Stelle in der Dokumentation erwähnt.
Also, wie kann ich Zeile für Zeile mit einem Stream und Laravels Storage
schreiben?
%Vor%Aber was wäre $ ressource hier?
$ resource ist Ihre Daten, die Sie vorbereiten, um durch Code auf die Festplatte zu schreiben.
Wenn Sie die Datei mit einer Schleife schreiben wollen, müssen Sie die Storage::append($file_name, $data);
verwenden, wie zuvor von ljubadr geschrieben
Ich habe $ data geschrieben, aber Sie können einen beliebigen Namen für eine Variable innerhalb einer Schleife verwenden.
Dokumentation zu Laravel 5.3 , schauen Sie in Automatisches Streaming
Wenn Sie möchten, dass Laravel das Streaming automatisch verwaltet Datei zu Ihrem Speicherort, können Sie die
putFile
oderputFileAs
verwenden Methode. Diese Methode akzeptiert entwederIlluminate\Http\File
oderIlluminate\Http\UploadedFile
Instanz und wird automatisch streamen die Datei an Ihren gewünschten Ort:
Sie können Datei mit Streaming wie folgt hochladen
%Vor%Wo Ihre Formulareingabe ist
%Vor%Tags und Links php laravel laravel-5.3 flysystem