Heim > PHP-Framework > Laravel > So verwenden Sie Laravel S3

So verwenden Sie Laravel S3

WBOY
Freigeben: 2023-05-26 13:10:07
Original
855 Leute haben es durchsucht

Mit der Entwicklung der Cloud-Computing- und Objektspeichertechnologie nutzen immer mehr Anwendungen Cloud-Speicher, um von Benutzern hochgeladene Dateien zu speichern und zu verarbeiten. Amazon S3 ist ein sehr beliebter Objektspeicherdienst, der eine nahezu unbegrenzte Anzahl von Dateien speichern kann und eine hochverfügbare, skalierbare und sichere Speicherlösung bietet.

Laravel ist ein weit verbreitetes PHP-Framework, das umfangreiche Funktionen und Tools zum einfachen Erstellen und Verwalten von Webanwendungen bietet. In diesem Artikel besprechen wir, wie Sie das Laravel-Framework und den Amazon S3-Speicherdienst zum Verwalten hochgeladener und gespeicherter Dateien verwenden.

AWS SDK installieren

Bevor wir mit der Nutzung des Amazon S3-Dienstes beginnen, müssen wir AWS SDK in der Laravel-Anwendung installieren. Wir können Composer verwenden, um das SDK zu installieren. Öffnen Sie ein Terminal oder eine Befehlszeile und navigieren Sie zum Stammverzeichnis Ihrer Laravel-Anwendung. Führen Sie dann den folgenden Befehl aus:

composer require aws/aws-sdk-php
Nach dem Login kopieren

Dadurch wird das AWS SDK in Ihrer Laravel-Anwendung installiert und für die Interaktion mit Amazon S3 vorbereitet.

Amazon S3 einrichten

Bei der Verwendung von Amazon S3 müssen wir die Anmeldeinformationen und die Konfiguration einrichten, die für die Interaktion mit Amazon S3 erforderlich sind. Zu diesen Anmeldeinformationen und Konfigurationen gehören die AWS-Zugriffsschlüssel-ID und der geheime Zugriffsschlüssel sowie der Regionsname und der Bucket-Name, die verwendet werden. Wir können diese Anmeldeinformationen und Konfiguration zur .env-Datei der Laravel-Anwendung hinzufügen, um sie zur Laufzeit zu verwenden.

Hier ist eine Beispiel-.env-Datei, die AWS-Anmeldeinformationen und Konfigurationsinformationen enthält:

AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_DEFAULT_REGION=us-west-2
AWS_BUCKET=your_bucket_name
Nach dem Login kopieren

Nachdem wir diese Anmeldeinformationen und Konfiguration in der .env-Datei festgelegt haben, können wir im Code der Laravel-Anwendung mithilfe der Konfigurationsfunktion darauf zugreifen. Um beispielsweise den Namen eines AWS-Buckets zu erhalten, rufen wir einfach den folgenden Code auf:

$bucketName = config('aws.bucket');
Nach dem Login kopieren

Hochladen von Dateien auf Amazon S3

Das Hochladen von Dateien auf Amazon S3 in einer Laravel-Anwendung ist dem Hochladen von Dateien auf einen lokalen Server oder einen anderen Server sehr ähnlich Cloud-Speicherdienst. Wir müssen zunächst ein Formular erstellen, das es dem Benutzer ermöglicht, eine Datei zum Hochladen auszuwählen. Anschließend speichern wir die Datei in der Laravel-Anwendung und laden sie auf Amazon S3 hoch.

Nachfolgend finden Sie ein Beispiel-Upload-Formular, das Benutzer zum Hochladen von Dateien verwenden können:

<form action="/upload" method="post" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file">
    <button type="submit">上传</button>
</form>
Nach dem Login kopieren

Nachdem der Benutzer die Datei hochgeladen hat, können wir den folgenden Code im Laravel-Controller verwenden, um die Datei auf Amazon S3 hochzuladen:

use AwsS3S3Client;
use IlluminateHttpRequest;

public function upload(Request $request)
{
    $file = $request->file('file');
    $fileName = $file->getClientOriginalName();

    $s3 = new S3Client([
        'version' => 'latest',
        'region'  => config('aws.region'),
        'credentials' => [
            'key'    => config('aws.key'),
            'secret' => config('aws.secret'),
        ],
    ]);

    $bucketName = config('aws.bucket');

    $result = $s3->putObject([
        'Bucket' => $bucketName,
        'Key'    => $fileName,
        'Body'   => file_get_contents($file),
        'ACL'    => 'public-read',
    ]);

    $fileUrl = $result['ObjectURL'];

    // 将文件URL保存到数据库或其他位置
}
Nach dem Login kopieren

Dieser Code wird Verwendung Das AWS SDK erstellt eine S3Client-Instanz und initialisiert die Instanz mit AWS-Anmeldeinformationen und -Konfiguration. Anschließend liest es die Datei aus der Anfrage, speichert sie in der Laravel-Anwendung und lädt sie mithilfe der putObject-Methode auf Amazon S3 hoch. Die ACL-Option ist auf public-read gesetzt, um sicherzustellen, dass die Datei nach dem Hochladen öffentlich zugänglich ist.

Nach dem Hochladen der Datei auf Amazon S3 können wir die URL der Datei in einer Datenbank oder an einem anderen Ort speichern, um die Datei in der Anwendung anzuzeigen.

Herunterladen von Dateien von Amazon S3

Um Dateien von Amazon S3 herunterzuladen, können wir die getObject-Methode aus der aws-sdk-php-Bibliothek verwenden. Hier ist ein Beispielcode zum Herunterladen einer Datei und zum Speichern auf dem Computer des Benutzers:

use AwsS3S3Client;
use IlluminateHttpRequest;

public function download($fileName)
{
    $s3 = new S3Client([
        'version' => 'latest',
        'region'  => config('aws.region'),
        'credentials' => [
            'key'    => config('aws.key'),
            'secret' => config('aws.secret'),
        ],
    ]);

    $bucketName = config('aws.bucket');

    $result = $s3->getObject([
        'Bucket' => $bucketName,
        'Key'    => $fileName,
    ]);

    $fileContent = $result['Body']->getContents();

    return response($fileContent, 200, [
        'Content-Type'        => $result['ContentType'],
        'Content-Disposition' => 'attachment;filename="' . $fileName . '"',
    ]);
}
Nach dem Login kopieren

Dieser Code erstellt eine getObject-Anfrage mit dem Dateinamen in Amazon S3 und ruft die Datei aus S3 ab. Anschließend speichert es den Dateiinhalt in der Variablen $fileContent und sendet ihn als Antwort an den Computer des Benutzers. Die Antwort besteht aus dem Dateiinhalt mit einem Content-Type-Header und einem Anhang mit einem Content-Disposition-Header, um dem Browser mitzuteilen, dass die Datei heruntergeladen und nicht im Browser geöffnet werden soll.

Zusammenfassung

In diesem Artikel haben wir vorgestellt, wie Sie den Amazon S3-Dateispeicherdienst in der Laravel-Anwendung verwenden. Wir haben besprochen, wie man die aws-sdk-php-Bibliothek installiert und die Anmeldeinformationen und die Konfiguration konfiguriert, die für die Interaktion mit Amazon S3 erforderlich sind. Wir haben auch gezeigt, wie man Dateien hoch- und herunterlädt. Mit diesen Techniken können Sie Dateien ganz einfach auf Amazon S3 hochladen und von Ihrer Laravel-Anwendung herunterladen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Laravel S3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage