Ich möchte Storage::put
verwenden, um eine Datei zu schreiben. Die Datei ist möglicherweise sehr groß (> 100MB), daher möchte ich einen Stream verwenden, damit ich nicht blind alles in den Speicher packe.Wie kann ich eine Ressource verwenden, um Zeile für Zeile zu schreiben, aber immer noch Laravel eingebauten Speicher verwenden?
Ich werde mehrere API-Anfragen machen, und dann durchlaufen sie ihre Ergebnisse, so dass die Daten, die ich bekommen werde, kein Problem sind, wird es auf vernünftige Mengen beschränkt werden.
Nach dem documentation, muss ich verwenden:
Storage::put('file.xml', $resource);
Aber was würde $resource
hier sein?
Traditionell beim Schreiben von Dateien mit PHP habe ich es mit einer Kombination von , fwrite
und fclose
getan, um 'Zeile für Zeile' zu schreiben. Ich baue die Datei durch Schleifen durch verschiedene Sammlungen und Verwendung verschiedener APIs, so wie ich gehe, so $resource
ist nicht ein Dateizeiger oder Dateiverweis, wie in der Dokumentation anderswo angesprochen wird.
Also, wie kann ich Zeile für Zeile mit einem Strom und Laravel schreiben?
Wenn Sie eine Datei mit einem anderen Namen hochladen möchten, verwenden Sie 'putFileAs'. – ljubadr
'$ file' ist eine Instanz von [UploadedFile] (https://laravel.com/api/5.3/Illuminate/Http/UploadedFile.html), so dass Sie dort nach verfügbaren Methoden suchen können. – ljubadr
Laut meiner Frage bin ich Ich lade keine Datei hoch, und ich streame keine Datei in eine andere Datei. Ich versuche, eine Nur-Text-Datei zu schreiben, die ich in Code streamweise einbaute.Ich habe es geschafft, dies sehr einfach mit 'fopen' und' fwrite' zu schreiben, würde aber die eingebauten 'Storage'-Methoden bevorzugen. Ich fange an zu denken, dass es nicht möglich ist. – Mike