Okay, nach viel zum Lesen AWS SDK für PHP-Dokumentation und Artikel online endlich verstehen, teile ich, wie es funktioniert, auch die grundlegend diejenigen.
Mein Problem stellte sich heraus, nicht die Datei zu bekommen, sondern die Datei in s3 zu speichern.
Ich benutzte den obigen Code (siehe meine Frage oben), um eine Datei hochzuladen. Es war der falsche Code. Was stimmt damit nicht? Ich habe die Datei nicht in einen Stream konvertiert, bevor ich sie in einen String umgewandelt und dann nach s3 hochgeladen habe. Was ich getan habe, war es direkt in String zu streamen und hochzuladen. Deshalb bekomme ich nichts, wenn ich storage :: get() verwende.
falscher Code:
$img = Image::make($file);
$origName = $request->file('file')->getClientOriginalName();
Storage::put($s3Bucket.'/'.$directory.'/'.$folderName.'/'.$origName, $img->__toString());
und was sonst ist hier falsch. Wenn Sie den Bucket-Namen eingeben, müssen Sie den Bucket-Namen nicht angeben, da sonst ein Ordner erstellt wird.
richtiger Code:
$image = $request->file('file'); //the image
$img = Image::make($file); // using interventation
$image_normal = $img->stream(); // to stream
Storage::put($origName, $image_normal->__toString(),'public'); //to string
und die Datei öffentlich zugänglich zu machen, ist nur einen dritten Parameter ‚public‘ sonst wird es automatisch als privat.
um es zusammenzufassen. Was Sie tun müssen, um s3-Dateien für Ihre Website hochzuladen und zu verwenden, ist Folgendes.
Erstellen Sie Ihr Konto in AWS s3, folgen Sie einfach den Anweisungen in Laravel 5.2 Dokumentation zum Einrichten der Dateisysteme.php in config \ Ordner
das Standardspeicher
'default' => 'S3' bis s3,
Ein Bild hochladen
$origName = $request->file('file')->getClientOriginalName();
$image = $request->file('file');
$img = Image::make($file);
$image_normal = $img ->stream();
Storage::put($origName, $image_normal->__toString(),'public');
die URL eines Bildes bekommen ist so einfach wie unter URL
https://s3-ap-southeast-1.amazonaws.com/mybucket/citibanko.PNG
https://s3-[region].amazonaws.com/[yourbucketname]/filename.PNG
zusätzlich, wenn Sie den Namen der Datei in Ihrem Eimer Verwendung Code unten aufgelistet werden sollen:
$ files = Speicher :: Dateien ('/'); Speicherauszug ($ Dateien);
für die Ordner
$ files = Speicher :: Dateien ('folder'); Speicherauszug ($ Dateien);
in Amazon s3 Unterverzeichnisse sind wirklich irrelevant, es ist nur Eimer und Dateinamen.
irgendwelche Artikel, die ich lesen sollte? –
Okay, jetzt weiß ich, warum ich nichts jedes Mal bekomme ich Speicher verwendet :: get() es ist, weil mein Code zum Hochladen falsch ist! lol. –