2017-12-17 3 views
1

Diese Code-Schnipsel aus dem Laravel docs, https://laravel.com/docs/5.5/responses#file-responses, nur zu sein scheint, was ich brauche:Laravel: Anzeigedatei von Cloud-Speicher im Browser

return response()->file($pathToFile); 

Das Problem ist, dass meine Datei auf einer S3 Platte gespeichert ist, und ich kann nicht richtig darauf verweisen.

Ich versuchte, Storage::disk('s3')->getDriver()->getAdapter()->applyPathPrefix($myPath); zu verwenden, um den vollständig qualifizierten Dateinamen zu erhalten. Es hat aber nur den Wert $myPath zurückgegeben.

Ich habe dann versucht, die URL mit Storage::disk('s3')->url($myPath); Die URL sieht gut aus, aber Symphony sagt, es existiert nicht. Wenn ich jedoch mit Storage::disk('s3')->exists($myPath); überprüfe, gibt es true zurück.

Wie gehe ich vor, um eine Datei aus dem Cloud-Speicher direkt im Browser des Benutzers anzuzeigen?

EDIT:

Details siehe unten:

  • Um das Element in der ersten Instanz zu speichern Ich bin mit $map->storeAs('/my/path/maps/filename.pdf', ['disk' => 's3']);
  • Der Ausgang der url() ist "https://s3.ap-southeast-2.amazonaws.com/my.domain.com/my/path/maps/filename.pdf"
  • Als ich Cut- und -über die URL in einer Browser-Adressleiste, lädt es kein Problem
  • Es scheint mir, dass die response()->file() Methode Akzeptiert keinen URL-Parameter. Ist das der Fall?

Frage - Muss die Datei öffentlich verfügbar sein? (Es ist derzeit, aber ich würde es vorziehen, es privat zu machen).

Antwort

1

sollte folgende genug sein:

$path = Storage::disk('s3')->url($filename); 

ich einrichten nicht ein funktionierendes Beispiel, aber aus dem Gedächtnis $filename sollte gleich sein wie das, was Sie ursprünglich in dem Verfahren ->put() platziert. Also, wenn Sie in Ihrer Frage $mypath sagen, hofft das hoffentlich nicht bereits Dinge wie Ihre S3-Instanz.

Wenn dies nicht der Fall ist, können Sie die Frage bearbeiten, um das Ergebnis von ->url() und ein Beispiel für Ihre put() -Aufruf und $ -Pfad zu enthalten.

am Schnitt Sehen, ich glaube, ich verstehe, was Sie zu tun versuchen, die hier gelöst wurden:

https://laracasts.com/discuss/channels/laravel/file-response-from-s3

+0

Ihr zweiter Punkt Punkt „die Ausgabe von url()“ sieht richtig. Wie benutzt du die Ausgabe von url()? Was erwarten Sie von der Antwort? – Chris

Verwandte Themen