클라우드 컴퓨팅 및 객체 스토리지 기술의 발전으로 점점 더 많은 애플리케이션이 클라우드 스토리지를 사용하여 사용자가 업로드한 파일을 저장하고 처리하기 시작했습니다. Amazon S3는 거의 무제한의 파일을 저장할 수 있고 가용성과 확장성이 뛰어나고 안전한 스토리지 솔루션을 제공하는 매우 인기 있는 객체 스토리지 서비스입니다.
Laravel은 웹 애플리케이션을 쉽게 구축하고 관리할 수 있는 풍부한 기능과 도구를 제공하는 널리 사용되는 PHP 프레임워크입니다. 이 글에서는 Laravel 프레임워크와 Amazon S3 스토리지 서비스를 사용하여 업로드 및 저장된 파일을 관리하는 방법에 대해 설명합니다.
AWS SDK 설치
Amazon S3 서비스를 사용하기 전에 Laravel 애플리케이션에 AWS SDK를 설치해야 합니다. Composer를 사용하여 SDK를 설치할 수 있습니다. 터미널이나 명령줄을 열고 Laravel 애플리케이션의 루트 디렉터리로 이동하세요. 그런 다음 다음 명령을 실행합니다.
composer require aws/aws-sdk-php
이렇게 하면 Laravel 애플리케이션에 AWS SDK가 설치되고 Amazon S3와 상호 작용할 준비가 됩니다.
Amazon S3 설정
Amazon S3를 사용하는 경우 Amazon S3와 상호 작용하는 데 필요한 자격 증명과 구성을 설정해야 합니다. 이러한 자격 증명 및 구성에는 AWS 액세스 키 ID 및 보안 액세스 키, 사용될 리전 이름 및 버킷 이름이 포함됩니다. 런타임에 사용할 수 있도록 이러한 자격 증명과 구성을 Laravel 애플리케이션의 .env 파일에 추가할 수 있습니다.
다음은 AWS 자격 증명 및 구성 정보가 포함된 샘플 .env 파일입니다.
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
.env 파일에서 이러한 자격 증명 및 구성을 설정한 후 config 함수를 사용하여 Laravel 애플리케이션의 코드에서 액세스할 수 있습니다. 예를 들어, AWS 버킷의 이름을 얻으려면 다음 코드를 호출하기만 하면 됩니다.
$bucketName = config('aws.bucket');
Amazon S3에 파일 업로드
Laravel 애플리케이션에서 Amazon S3에 파일을 업로드하는 것은 로컬 서버 또는 기타 서버에 파일을 업로드하는 것과 매우 유사합니다. 클라우드 스토리지 서비스. 먼저 사용자가 업로드할 파일을 선택할 수 있는 양식을 만들어야 합니다. 그런 다음 파일을 Laravel 애플리케이션에 저장하고 Amazon S3에 업로드합니다.
다음은 사용자가 파일을 업로드하는 데 사용할 수 있는 샘플 업로드 양식입니다.
<form action="/upload" method="post" enctype="multipart/form-data"> @csrf <input type="file" name="file"> <button type="submit">上传</button> </form>
사용자가 파일을 업로드한 후 Laravel 컨트롤러에서 다음 코드를 사용하여 파일을 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保存到数据库或其他位置 }
이 코드는 사용 AWS SDK는 S3Client 인스턴스를 생성하고 AWS 자격 증명 및 구성을 사용하여 인스턴스를 초기화합니다. 그런 다음 요청에서 파일을 읽고 Laravel 애플리케이션에 저장한 다음 putObject 메서드를 사용하여 Amazon S3에 업로드합니다. ACL 옵션은 업로드 후 파일에 공개적으로 액세스할 수 있도록 public-read로 설정됩니다.
파일을 Amazon S3에 업로드한 후 파일의 URL을 데이터베이스나 다른 위치에 저장하여 애플리케이션에 파일을 표시할 수 있습니다.
Amazon S3에서 파일 다운로드
Amazon S3에서 파일을 다운로드하려면 aws-sdk-php 라이브러리의 getObject 메서드를 사용할 수 있습니다. 다음은 파일을 다운로드하고 이를 사용자 컴퓨터에 저장하기 위한 샘플 코드입니다.
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 . '"', ]); }
이 코드는 Amazon S3에서 파일 이름으로 getObject 요청을 생성하고 S3에서 파일을 가져옵니다. 그런 다음 파일 내용을 $fileContent 변수에 저장하고 응답으로 사용자 컴퓨터에 보냅니다. 응답은 브라우저에서 파일을 열지 않고 다운로드해야 함을 브라우저에 알리기 위해 Content-Type 헤더가 있는 파일 콘텐츠와 Content-Disposition 헤더가 있는 첨부 파일입니다.
Summary
이 글에서는 Laravel 애플리케이션에서 Amazon S3 파일 스토리지 서비스를 사용하는 방법을 소개했습니다. aws-sdk-php 라이브러리를 설치하고 Amazon S3와 상호 작용하는 데 필요한 자격 증명 및 구성을 구성하는 방법을 논의했습니다. 또한 파일을 업로드하고 다운로드하는 방법도 시연했습니다. 이러한 기술을 사용하면 쉽게 Amazon S3에 파일을 업로드하고 Laravel 애플리케이션에서 다운로드할 수 있습니다.
위 내용은 라라벨 s3 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!