AWS S3 연결에 필요한 소스 코드를 확장 시켜 줘야 합니다.
composer require league/flysystem-aws-s3-v3
아래와 같이 결과가 수행됩니다.
2.s3 버짓 설정
버킷 생성시에는 이름 및 지역, 옵션 구성, 권한 설정, 검토의 순서로 진행되는데 다른 부분은 넘어가고 3 권한 설정에서 모든 퍼블릭 엑세스 차단을 해제해 주세요.
3.AWS 의 IAM 키생성
콘솔에 들어가서 s3를 사용할수 있는 엑세스키 생성
4.연동
.env 파일에 다음 값들을 추가해주세요.
AWS_ACCESS_KEY_ID=AGXAVIK5EY6TCTTS3I4L //IAM ACCESS KEY
AWS_SECRET_ACCESS_KEY=Awa8X1/038B6AXe1/EiDBzE9haIyfwGECgHXzABe //IAM SECRET KEY
AWS_DEFAULT_REGION=ap-northeast-2 //REGION CODE (링크 참조)
AWS_BUCKET=test-s3-buket //버킷 명
한국(서울)의 리전 코드값은, ap-northeast-2 입니다.
5.저장코드
$fileSize = $request::file($uploadName) Illuminate\Support\Facades\Request 를 이용하며, 파일의 정보를 가져옵니다.
getClientSize() = 파일 용량 반환를 반환합니다.
getClientOriginalName = 파일 명 반환를 반환합니다.
getClientOriginalExtension = 파일 확장자를 반환합니다.
Storage::disk('s3')->put(...) 는 파일을 직접 업로드 합니다.
IAM설정,S3권한설정은 다양합니다. 비교적 간단하게 설정하였고 명령어는 많다.
-복사, 삭제, 이동, 이름변경
Storage::disk('s3')->put('tmp/'.$file, file_get_contents($file) );//추가
Storage::disk('s3')->delete('tmp/' . $file);//삭제
Storage::disk('s3')->files('tmp');//리스트
Storage::disk('s3')->get($file);//내용
Storage::disk('s3')->url($file);//인터넷 주소
Storage::size('file1.jpg');//크기 조회
Storage::copy('old/file1.jpg', 'new/file1.jpg');//복사
Storage::move('old/file1.jpg', 'new/file1.jpg');//이동
Storage::files($directory);//파일 목록
Storage::allFiles($directory);//하위 폴더 포함
Storage::directories($directory);//폴더 목록
Storage::allDirectories($directory);
Storage::makeDirectory($directory);//폴더 만들기
Storage::deleteDirectory($directory);//폴더 삭제
//참고
http://stayregular.net/blog/how-to-upload-images-using-amazon-s3-and-laravel
https://dzone.com/articles/how-to-upload-files-to-amazon-s3-using-laravel
'PHP' 카테고리의 다른 글
Laravel HTTP 세션 (0) | 2020.06.16 |
---|---|
[PHP] 텔레그램 api로 알림 받기 (0) | 2020.06.15 |
PHP Composer 설치 및 사용법 (0) | 2020.06.05 |
라라벨 orm query log 남기기 (0) | 2020.05.21 |