2017-07-28 4 views
0

Ich habe ein Laravel-Projekt, mit dem Sie Fotos hochladen können und sie S3 Eimer gespeichert sind.Zip-und Download-Dateien von Amazon S3 mit Laravel

Zu bestimmten Zeiten ist es erforderlich, ein ganzes Album herunterzuladen, das ein Ordner im S3-Bucket-Speicher ist. Daher sollte es als ZIP-Datei mit Fotos des Albums heruntergeladen werden.

Ich habe dies geschafft, wenn diese auf dem lokalen Speicher gespeichert sind.

public function downloadZip() { 
      $files = glob(public_path('js/*')); 
      Zipper::make('mydir/mytest3.zip')->add($files); 


      return response()->download(public_path('mydir/mytest3.zip')); 
} 

Aber in S3-Bucket funktioniert diese Methode nicht.

Gibt es eine Möglichkeit, dies zu tun?

+0

Welche Methode haben Sie für lokalen Speicher verwendet? – ceejayoz

+0

@ceejayoz Ich habe die Frage aktualisiert :) – TharinduLucky

+0

OK, ja, das wird nicht funktionieren. Sie können 'glob' nicht für einen S3-Bucket verwenden. Es gibt keine wirklich einfache Möglichkeit, das zu tun, was Sie wollen - Sie müssen die Dateien auf Ihren Server herunterladen und dort zippen. Siehe https://stackoverflow.com/questions/16368119/zip-an-tire-directory-on-s3 für warum und eine mögliche Methode. – ceejayoz

Antwort

-1

AWS macht SDKs für verschiedene Plattformen wie Java/PHP usw. verfügbar, um mit verschiedenen AWS-Diensten zu interagieren.

Sie benötigen https://aws.amazon.com/sdk-for-php/ für Ihre PHP-Code für den Zugriff auf Dateien von kopieren s3

+0

Laravel hat integrierte Handhabung für S3 über die Storage-Fassade. – ceejayoz

0

Sie Amazone Dienstmerkmal Async transfers versuchen. Dies wird Ihnen helfen, die s3-Dateien zu bekommen und danach können Sie Ihre Zipper Logik verwenden, um diese Dateien zu komprimieren.