Maison > cadre php > Laravel > Comment utiliser Laravel S3

Comment utiliser Laravel S3

WBOY
Libérer: 2023-05-26 13:10:07
original
857 Les gens l'ont consulté

Avec le développement de la technologie du cloud computing et du stockage d'objets, de plus en plus d'applications commencent à utiliser le stockage dans le cloud pour stocker et traiter les fichiers téléchargés par les utilisateurs. Amazon S3 est un service de stockage d'objets très populaire qui peut stocker un nombre presque illimité de fichiers et fournit une solution de stockage hautement disponible, évolutive et sécurisée.

Laravel est un framework PHP largement utilisé qui fournit des fonctionnalités et des outils riches pour créer et gérer facilement des applications Web. Dans cet article, nous verrons comment utiliser le framework Laravel et le service de stockage Amazon S3 pour gérer les fichiers téléchargés et stockés.

Installer le SDK AWS

Avant de commencer à utiliser le service Amazon S3, nous devons installer le SDK AWS dans l'application Laravel. Nous pouvons utiliser composer pour installer le SDK. Ouvrez un terminal ou une ligne de commande et accédez au répertoire racine de votre application Laravel. Exécutez ensuite la commande suivante :

composer require aws/aws-sdk-php
Copier après la connexion

Cela installera le SDK AWS dans votre application Laravel et la préparera à interagir avec Amazon S3.

Configurer Amazon S3

Lors de l'utilisation d'Amazon S3, nous devons configurer les informations d'identification et la configuration requises pour interagir avec Amazon S3. Ces informations d'identification et configuration incluent l'ID de clé d'accès AWS et la clé d'accès secrète, le nom de la région et le nom du compartiment qui seront utilisés. Nous pouvons ajouter ces informations d'identification et configuration au fichier .env de l'application Laravel pour une utilisation au moment de l'exécution.

Voici un exemple de fichier .env qui contient les informations d'identification AWS et les informations de configuration :

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
Copier après la connexion

Après avoir défini ces informations d'identification et cette configuration dans le fichier .env, nous pouvons y accéder dans le code de l'application Laravel à l'aide de la fonction de configuration. Par exemple, pour obtenir le nom d'un bucket AWS, nous appelons simplement le code suivant :

$bucketName = config('aws.bucket');
Copier après la connexion

Télécharger des fichiers vers Amazon S3

Le téléchargement de fichiers vers Amazon S3 dans une application Laravel est très similaire au téléchargement de fichiers vers un serveur local ou autre. service de stockage en nuage. Nous devons d'abord créer un formulaire permettant à l'utilisateur de sélectionner un fichier à télécharger. Nous enregistrons ensuite le fichier dans l'application Laravel et le téléchargeons sur Amazon S3.

Vous trouverez ci-dessous un exemple de formulaire de téléchargement que les utilisateurs peuvent utiliser pour télécharger des fichiers :

<form action="/upload" method="post" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file">
    <button type="submit">上传</button>
</form>
Copier après la connexion

Une fois que l'utilisateur a téléchargé le fichier, nous pouvons utiliser le code suivant dans le contrôleur Laravel pour télécharger le fichier sur Amazon S3 :

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保存到数据库或其他位置
}
Copier après la connexion

Ce code sera utilisation Le SDK AWS crée une instance S3Client et initialise l'instance avec les informations d'identification et la configuration AWS. Il lira ensuite le fichier de la requête, l'enregistrera dans l'application Laravel et le téléchargera sur Amazon S3 à l'aide de la méthode putObject. L'option ACL est définie sur lecture publique pour garantir que le fichier est accessible publiquement après le téléchargement.

Après avoir téléchargé le fichier sur Amazon S3, nous pouvons enregistrer l'URL du fichier dans une base de données ou à un autre emplacement pour afficher le fichier dans l'application.

Téléchargement de fichiers depuis Amazon S3

Pour télécharger des fichiers depuis Amazon S3, nous pouvons utiliser la méthode getObject de la bibliothèque aws-sdk-php. Voici un exemple de code pour télécharger un fichier et l'enregistrer sur l'ordinateur de l'utilisateur :

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 . '"',
    ]);
}
Copier après la connexion

Ce code créera une requête getObject avec le nom de fichier dans Amazon S3 et obtiendra le fichier de S3. Il enregistre ensuite le contenu du fichier dans la variable $fileContent et l'envoie en réponse à l'ordinateur de l'utilisateur. La réponse est le contenu du fichier avec un en-tête Content-Type et une pièce jointe avec un en-tête Content-Disposition pour indiquer au navigateur que le fichier doit être téléchargé plutôt que ouvert dans le navigateur.

Résumé

Dans cet article, nous avons présenté comment utiliser le service de stockage de fichiers Amazon S3 dans l'application Laravel. Nous avons expliqué comment installer la bibliothèque aws-sdk-php et configurer les informations d'identification et la configuration requises pour interagir avec Amazon S3. Nous avons également montré comment télécharger et télécharger des fichiers. Avec ces techniques, vous pouvez facilement télécharger des fichiers sur Amazon S3 et les télécharger depuis votre application Laravel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal