본문 바로가기

Laravel Blog

[Back] Laravel AWS S3와 연결해 이미지 업로드하기 - 2. 파일 연동

반응형

 

 

저번 시간에는 라라벨과 AWS S3를 연동하기 위한 설정들을 함께 구성해 보았습니다.

 

테스트를 위해 간단한 테스트 페이지를 구성하였습니다.

<html>
<head></head>
<body>
  <h1>Documents</h1>
  <form action="/upload" id="frm" method="POST" enctype="multipart/form-data">
    {{ csrf_field() }}
    <input type="file" name="uploadName" />
    <input type = "submit" value="upload" />
  </form>
</body>
</html>

 

파일을 받아 폼 방식으로 POST 요청을 합니다.

 

 

라우팅은 다음과 같습니다.

Route::get('/upload', [DocumentController::class, 'index'])
-> name('upload.index');
Route::post('/upload', [DocumentController::class, 'store'])
-> name('upload.store');

/upload 로 POST요청을 보내면 DocumentController의 store 메소드가 실행이 됩니다.

 

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class DocumentController extends Controller
{
    public function index()
    {
        return view('documents.index');
    }

    public function store(Request $request)
    {
        $path = $request -> file('uploadName')->store ('test1','s3');
        dd($path)
    }
}

 

/upload 로 GET요청을 받으면 index.blade.php 파일이 실행되고

/upload로 POST요청을 받으면 요청 내용을 받아와 S3버켓에 저장하는 작업을 수행합니다.

index.blade.php의 <input type="file" name="uploadName" />에서 받아온 파일을 S3버켓에 저장합니다.

그리고 dd($path) 명령어를 통해 업로드 경로를 확인해보도록 하겠습니다.

 

 

 

파일 선택 버튼을 누르고 모달이 뜨면 파일을 선택합니다.

 

 

 

upload 버튼을 눌러 POST요청을 보냅니다.

 

 

 

 

 

dd명령어를 통해 확인해보니 업로드에 성공하여 경로가 잘 출력됩니다. 

 

 

 

AWS콘솔로 확인해보니 파일이 잘 올라간 모습을 확인할 수 있습니다!!

 

 


 

 

라라벨 페이지에서 AWS S3버킷에 이미지를 업로드하는 과정까지 완료하였습니다. 수고 많으셨습니다.

 

다음 시간에는 파일매니저에 이미지를 업로드하는 공간을 만들고, 업로드에 성공하면 (POST) 다시 이미지를 받아와 썸네일을 만들어주는 (GET) 과정을 포스팅하도록 하겠습니다.

 

감사합니다.

반응형