2016-06-23 2 views
0

Ich arbeite an einer Laravel 5.2-Anwendung, wo Benutzer eine Datei per POST senden können, speichert die Anwendung diese Datei an einem bestimmten Speicherort und ruft sie später bei Bedarf ab. Ich benutze Amazon Elastic Beanstalk. Für die lokale Entwicklung auf meinem Computer möchte ich, dass die Dateien in einem bestimmten lokalen Ordner auf meinem Computer gespeichert werden. Und wenn ich es in AWS-EB deployen möchte, möchte ich, dass es stattdessen die Dateien in S3 automatisch umschaltet und speichert. Also möchte ich nicht so etwas wie \Storage::disk('s3')->put(...) fest codieren, weil das lokal nicht funktioniert.Wie richten Sie verschiedene hochgeladene Dateispeicherorte für Laravel 5.2 in lokaler Bereitstellung und AWS EB mit S3 ein?

Was ich versuche, hier zu tun ist ähnlich zu dem, was ich konnte für Umgebungsvariablen für die Datenbankkonnektivität tun ... Ich konnte einige große Tutorials finden, wo Sie eine .env.elasticbeanstalk-Datei zu erstellen, erstellen Sie eine Konfigurationsdatei an ~/.ebextiontions/01envconfig.config, um die Standarddatei .env bei der Bereitstellung automatisch zu ersetzen, und ändern Sie einige Zeilen Ihrer database.php, um automatisch die entsprechende Variable zu ziehen.

Wie mache ich etwas Ähnliches mit dem Speichern und Abrufen von Dateien?

+0

Ich fange an zu denken, dass es einen einfachen Weg gibt, dies zu erreichen, aber ich habe es noch nicht bestimmt. Zeigt AWS-EB automatisch auf S3 für "lokalen" Speicher? – jreikes

Antwort

0

Ok. Habe es funktioniert. In /config/filesystems.php, ich geändert:

'default' => 'local', 

zu:

'default' => env('DEFAULT_STORAGE') ?: 'local', 

In meiner .env.elasticbeanstalk-Datei (die ursprüngliche Frage nach einer Erklärung von dem, was das ist), habe ich folgendes (ich Weglassen meine eigentlichen Schlüssel und geheime Werte):

DEFAULT_STORAGE=s3 
S3_KEY=[insert your key here] 
S3_SECRET=[insert your secret here] 
S3_REGION=us-west-2 
S3_BUCKET=cameraflock-clips-dev 

Bitte beachte, dass ich meine Region us-west-2 obwohl S3 zeigen meine Umgebung alsmusste angeben.

In meinem Upload-Controller gebe ich keine Festplatte an. Stattdessen verwende ich:

\Storage::put($filePath, $filePointer, 'public'); 

Auf diese Weise ist es immer verwendet meine „default“ Festplatte für den \Storage Betrieb. Wenn ich in meiner lokalen Umgebung bin, ist das mein public Ordner. Wenn ich in AWS-EB bin, wird meine Elastic Beanstalk .env Datei in Kraft und \Storage standardmäßig S3 mit entsprechenden Anmeldeinformationen.

Verwandte Themen