라라벨은 파일을 저장할때 Storage를 권장한다고 하니 Storage를 사용해 보자. 하지만 기존 방식으로도 가능하니까 굳이 안바꿔도 된다. 아래 설명에는 심볼링 링크같은 약간 어려운 개념이 따라오기때문에 이해가 어려울 수도 있다. 따라해보고 어려우면 그냥 기존 방식대로 하면 된다.
/app/Http/Controllers/BoardController.php
기존엔 storage를 사용하지 않고 파일을 저장했다.
$image->move(public_path('images'), $new_name);
public 폴더 아래에 images에 저장하도록 했었다. 이제 이걸 Storage 클래스를 이용해서 파일을 저장하도록 바꿔보자.
콘트롤러 파일 최상단에 File과 Storage를 추가 해주어야 한다. 그리고 콘트롤러를 위와같이 수정해준다 이렇게 하면 되는데 이렇게 해서 하면 안되니 문제다. 위 코드가 돌아가도록 설정을 몇개 해주어야 한다.
/config/filesystems.php
root 경로가 기존에는 app까지만 돼 있다. 이걸 app/public으로 바꿔준다.
그리고 콘솔에서 명령을 내려준다.
$php artisan storage:link
이렇게 명령을 내리면 자동으로 public 폴더 아래에 storage 라는 심볼릭링크를 만들어 준다. 링크 걸린 경로는 /storage/app/public 이다. 그래서 /public/storage 로 이동하면 실제로는 /storage/app/public 이 경로로 이동하게 되는 거다.
이제 이 경로에 images 폴더를 만들고 여기에 이미지를 저장해 주려고 한다. 그러려면 해당 경로에 외부에서 파일을 저장할수 있도록 권한을 주어야 한다.
/storage/app/public 아래에 images 폴더를 만들고 아래처럼 폴더의 권한을 775로 준다.
$chmod 775 images
이제 이미지를 올려보면 /storage/app/public/images 폴더에 파일이 올라간 것을 확인할 수 있다.
Storage::putFileAs('images', $request->file('file'), $new_name);
이게 어떻게 이렇게 되는거냐하면 putFileAs라는 함수가 자동으로 미리 설정해둔 /storage/app/public/ 폴더 아래의 'images' 폴더에 저장을 해준다는 것이다.
그리고 이미지를 올리면 리턴값을 받아 섬머노트 안에 자동으로 이미지가 들어가게 해야 하니 그 부분을 수정해 보자.
/resources/views/boards/summernote.blade.php
이렇게 바꿔준다.
이미지 경로를 data.imgurl로 받도록 수정했다.
imgurl은 콘트롤러에서
이렇게 생성했다. 이렇게 생성하면 경로는 "/storage/images/803053874_1725263503.jpg" 이런식으로 리턴해준다. 그러면 이미지니까 <img src="/storage/images/803053874_1725263503.jpg" style="max-width: 100%; padding: 10px;"> 이렇게 화면에 들어가게된다.
Storage를 이용해서 삭제도 해보자.
Storage::delete('images/'.$filename);
Storage가 경로를 알아서 찾아가게 된다. 위에 설정했던 경로로. 그리고 그 아래에 있는 images를 지정해서 파일을 삭제할 수 있다.
Storage를 이용해서 파일을 업로드 하는걸 해봤다. 굳이 안해도 기존 방식대로 해도 되는데 라라벨은 Storage를 권장한다고 하니 Storage를 이용하는 방법도 소개했다. 앞에서도 얘기했지만 개념이 쉽지 않으니 따라하다가 잘 안되면 기존 방식을 그대로 사용해도 된다.
'PHP강좌 > [라라벨]게시판만들기강좌' 카테고리의 다른 글
[라라벨+mysql]게시판 만들기 강좌 #32. Password를 이용해서 비밀번호규칙 정하기 (0) | 2024.09.09 |
---|---|
[라라벨+mysql]게시판 만들기 강좌 #30. 완성된 사이트를 서버 호스팅으로 배포하기 (0) | 2024.08.19 |
[라라벨+mysql]게시판 만들기 강좌의 지금까지 소스 모음 (0) | 2024.08.13 |
[라라벨+mysql]게시판 만들기 강좌 #29. 함수를 이용해서 새글, 첨부파일, 댓글 수 표시 (0) | 2024.08.13 |
[라라벨+mysql]게시판 만들기 강좌 #28. 대댓글 (0) | 2024.08.13 |