파일스토리지 설정하기
- 파일 시스템 설정파일위치 config/filesystem.php
- 설정파일에서 이미지 저장 path, url등을 수정할 수 있다.
Public 디스크
- public 디스크는 local드라이버를 사용하고 storage/app/public에 저장함.
- 웹에서 파일을 서빙하려면 public/storage를 storage/app/public으로 심볼릭 링크를 생성해야한다. 아티즌명령으로 심볼릭링크를 생성할 수 있다.
php artisan storage:link
명령을 실행하고 public/storage를 확인하면 심볼링 링크가 생성된걸 확인 할 수 있다. 이제 파일을 업로드하고 처리하는 코드를 작성해보자.
#write.blade.php
<form enctype="multipart/form-data">
<input type="file" name="file">
</form>
#controller
$request->file('file')->store('images', 'public');
store메소드의 첫번째 인자는 파일이 저장될 폴더명이다. 예제에서는 ‘images’로 지정했기 때문에 /storage/app/public에 images 폴더를 생성한 뒤 파일을 저장한다.
파일명은 자동으로 랜덤한 값이 들어가고 경로와함께 반환된다. 예) images/임의이름.jpg
두번째 인자는 저장에 사용할 디스크를 지정한다.
#view.blade.php // 파일 서빙
{{asset('storage/file.jpg')}}
asset(‘storage/file.jpg’)을 통해서 반환되는 이미지 경로는 mysite.com/storage/images/file.jpg 가 된다.
실제로사용하기
- 글을저장하는 post테이블, 파일을 저장하는 file테이블이 있다.
- post모델에 1:다 관계(hasMany)를 지정한다.
- file모델에는 1:1 관계( belongsTo)를 지정한다.
뷰에서 값을 확인하면 객체를 포함한 배열을 볼수 있다. 아래와 같이 배열의 길이를 확인하고 처리하면된다.
@if(count($post->file))
{{$post->file[0]->ori_fname}}
@endif
참고