Laravel

[Laravel] NCLOUD Object Storage(S3) 업로드

먹세 2023. 6. 9. 10:47

라라벨에서 NCLOUD Object Storage로 파일 업로드 하기

 

1. s3 라이브러리 설치

 composer require league/flysystem-aws-s3-v3

 

2. env 세팅

# NCLOUD Object Storage
NCLOUD_ACCESS_KEY_ID=sdfosdijf...
NCLOUD_SECRET_ACCESS_KEY=dijsfid...
NCLOUD_DEFAULT_REGION=kr-standard
NCLOUD_BUCKET=my_bucket
NCLOUD_ENDPOINT=https://kr.object.ncloudstorage.com

 

3. filesystems.php 세팅

// ncloud 세팅
'ncloud' => [
    'driver' => 's3',
    'key' => env('NCLOUD_ACCESS_KEY_ID'),
    'secret' => env('NCLOUD_SECRET_ACCESS_KEY'),
    'region' => env('NCLOUD_DEFAULT_REGION'),
    'bucket' => env('NCLOUD_BUCKET'),
    'endpoint' => env('NCLOUD_ENDPOINT'),
],

// s3 세팅
's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
],

s3 세팅과 동일하지만 ncloud에서는 url 을 endpoint 로 대체해야 정상동작 함.

 

4. 코드테스트

try {
    Storage::disk('ncloud')->put('uploaded_file_name.mp3', file_get_contents($myfile));
    
    // 파일을 public 권한으로 올리기
    Storage::disk('ncloud')->put('uploaded_file_name.mp3', file_get_contents($myfile), 'public');
} catch (\Exception $exception) {
    Log::channel('err')->error($exception);
}

설정한 ncloud disk로 접근해서 put 메소드로 업로드할 이름을 적어주고, 뒤에는 실제로 업로드할 파일을 선택해준다.

올릴 파일에 권한을 주고 싶은 경우는 'public' 으로 옵션을 주면 된다.

반응형