Rumah > rangka kerja php > Laravel > Cara menggunakan laravel s3

Cara menggunakan laravel s3

WBOY
Lepaskan: 2023-05-26 13:10:07
asal
857 orang telah melayarinya

Dengan pembangunan pengkomputeran awan dan teknologi storan objek, semakin banyak aplikasi mula menggunakan storan awan untuk menyimpan dan memproses fail yang dimuat naik oleh pengguna. Amazon S3 ialah perkhidmatan storan objek yang sangat popular yang boleh menyimpan bilangan fail yang hampir tidak terhad dan menyediakan penyelesaian storan yang sangat tersedia, berskala dan selamat.

Laravel ialah rangka kerja PHP yang digunakan secara meluas yang menyediakan ciri dan alatan yang kaya untuk membina dan mengurus aplikasi web dengan mudah. Dalam artikel ini, kami akan membincangkan cara menggunakan rangka kerja Laravel dan perkhidmatan storan Amazon S3 untuk mengurus fail yang dimuat naik dan disimpan.

Pasang AWS SDK

Sebelum mula menggunakan perkhidmatan Amazon S3, kami perlu memasang AWS SDK dalam aplikasi Laravel. Kita boleh menggunakan komposer untuk memasang SDK. Buka terminal atau baris arahan dan navigasi ke direktori akar aplikasi Laravel anda. Kemudian jalankan arahan berikut:

composer require aws/aws-sdk-php
Salin selepas log masuk

Ini akan memasang AWS SDK dalam aplikasi Laravel anda dan menyediakannya untuk berinteraksi dengan Amazon S3.

Menyediakan Amazon S3

Apabila menggunakan Amazon S3, kami perlu menyediakan bukti kelayakan dan konfigurasi yang diperlukan untuk berinteraksi dengan Amazon S3. Bukti kelayakan dan konfigurasi ini termasuk ID kunci akses AWS dan kunci akses rahsia, nama rantau dan nama baldi yang akan digunakan. Kami boleh menambah bukti kelayakan dan konfigurasi ini pada fail .env aplikasi Laravel untuk digunakan semasa masa jalan.

Berikut ialah contoh fail .env yang mengandungi bukti kelayakan dan maklumat konfigurasi AWS:

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
Salin selepas log masuk

Selepas menetapkan kelayakan dan konfigurasi ini dalam fail .env, kita boleh menggunakan fungsi konfigurasi dalam aplikasi Laravel mengaksesnya dari dalam kod program. Sebagai contoh, untuk mendapatkan nama baldi AWS, kami hanya memanggil kod berikut:

$bucketName = config('aws.bucket');
Salin selepas log masuk

Memuat naik fail ke Amazon S3

Memuat naik fail ke Amazon S3 dalam aplikasi Laravel lwn. Memuat naik fail ke pelayan tempatan Atau perkhidmatan storan awan lain sangat serupa. Mula-mula kita perlu membuat borang yang membolehkan pengguna memilih fail untuk dimuat naik. Kami kemudian menyimpan fail ke dalam aplikasi Laravel dan memuat naiknya ke Amazon S3.

Berikut ialah contoh borang muat naik yang boleh digunakan pengguna untuk memuat naik fail:

<form action="/upload" method="post" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file">
    <button type="submit">上传</button>
</form>
Salin selepas log masuk

Selepas pengguna memuat naik fail, kita boleh menggunakan kod berikut dalam pengawal Laravel untuk memuat naik fail ke 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保存到数据库或其他位置
}
Salin selepas log masuk

Kod ini akan mencipta tika S3Client menggunakan SDK AWS dan memulakan tika dengan bukti kelayakan dan konfigurasi AWS. Ia kemudian akan membaca fail daripada permintaan, menyimpannya ke aplikasi Laravel, dan memuat naiknya ke Amazon S3 menggunakan kaedah putObject. Pilihan ACL ditetapkan kepada umum-baca untuk memastikan bahawa fail boleh diakses secara umum selepas memuat naik.

Selepas memuat naik fail ke Amazon S3, kami boleh menyimpan URL fail ke pangkalan data atau lokasi lain untuk memaparkan fail dalam aplikasi.

Memuat turun fail daripada Amazon S3

Untuk memuat turun fail daripada Amazon S3, kita boleh menggunakan kaedah getObject daripada perpustakaan aws-sdk-php. Berikut ialah contoh kod untuk memuat turun fail dan menyimpannya ke komputer pengguna:

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 . '"',
    ]);
}
Salin selepas log masuk

Kod ini akan membuat permintaan getObject dengan nama fail dalam Amazon S3 dan mendapatkan fail daripada S3. Ia kemudian menyimpan kandungan fail ke dalam pembolehubah $fileContent dan menghantarnya ke komputer pengguna sebagai tindak balas. Responsnya ialah kandungan fail dengan pengepala Jenis Kandungan dan lampiran dengan pengepala Pelupusan Kandungan untuk memberitahu penyemak imbas bahawa fail itu harus dimuat turun dan bukannya dibuka dalam penyemak imbas.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan perkhidmatan storan fail Amazon S3 dalam aplikasi Laravel. Kami membincangkan cara memasang perpustakaan aws-sdk-php dan mengkonfigurasi kelayakan serta konfigurasi yang diperlukan untuk berinteraksi dengan Amazon S3. Kami juga menunjukkan cara memuat naik dan memuat turun fail. Dengan teknik ini, anda boleh memuat naik fail dengan mudah ke Amazon S3 dan memuat turunnya daripada aplikasi Laravel anda.

Atas ialah kandungan terperinci Cara menggunakan laravel s3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan