업로드 폴더 생성
파일 업로드가 가능한 게시판을 만들었는데, 우선 /storage/app/public 아래에 bbs 라는 폴더를 생성하였다.
$ mkdir bbs
$ chmod -R 777 bbs
라라벨 controller
업로드 파일이 존재하면 /public/bbs 하위에 게시물마다 고유한 이름의 폴더를 생성한다.
생성된 폴더에 파일들을 업로드한다.
$files = $request->file('upload');
if($request->hasFile('upload')) {
$uploadDir = $this->getRandNo();
File::makeDirectory('/public/bbs/'.$uploadDir, $mode = 0777, true, true);
foreach ($files as $key => $file) {
$file->storeAs('/public/bbs/'.$uploadDir, $file->getClientOriginalName());
}
}
아래처럼 파일이 첨부된 게시물마다 각각의 폴더가 생성된다(중복 파일명 overwrite 방지).
$ ll /var/www/html/example/storage/app/public/bbs
total 44
drwxr-xr-x 11 www-data www-data 4096 Jun 21 18:19 ./
drwxrwxrwx 3 lifelike2 lifelike2 4096 Jun 20 13:38 ../
drwxr-xr-x 2 www-data www-data 4096 Jun 20 14:15 1718860536592/
drwxr-xr-x 2 www-data www-data 4096 Jun 20 14:34 1718861680786/
drwxr-xr-x 2 www-data www-data 4096 Jun 20 17:31 1718871123726/
drwxr-xr-x 2 www-data www-data 4096 Jun 20 17:24 1718871887183/
drwxr-xr-x 2 www-data www-data 4096 Jun 20 17:35 1718872538235/
drwxr-xr-x 2 www-data www-data 4096 Jun 21 09:36 1718930168688/
drwxr-xr-x 2 www-data www-data 4096 Jun 21 18:15 1718959823990/
drwxr-xr-x 2 www-data www-data 4096 Jun 21 18:19 1718961547973/
drwxr-xr-x 2 www-data www-data 4096 Jun 24 09:41 1718961577454/
다운로드 확인
다운로드 URL 은 https://도메인/storage/bbs/폴더명/파일명 식이 될텐데,
이렇게 접근하려면 public 폴더 하위에 심볼릭 링크를 생성해야 한다.
(원본 : /public/storage, 링크 : /storage/app/public)
리눅스 ln 명령어로도 가능하고 artisan 으로도 가능하다.
$ php artisan storage:link
The [/var/www/html/example/public/storage] link has been connected to [/var/www/html/example/storage/app/public].
The links have been created.
참고문헌 및 관련링크
'코딩 > Laravel' 카테고리의 다른 글
laravel - 컴포넌트 (0) | 2024.06.25 |
---|---|
라라벨 - 전역변수, 상수 사용 (Config, View, boot) (0) | 2024.06.25 |
laravel - AJAX 전송 시 Content-Type 지정 (Error 405) (0) | 2024.06.24 |
Laravel - MSSQL 서버 연결 실패 오류 SSL routines:tls_process_server_certificate:certificate verify failed (0) | 2023.08.29 |
Laravel - MSSQL 서버 연동 오류 QueryException could not find driver (0) | 2023.08.29 |