현재 Laravel 5.8을 실행하는 프로젝트가 있으며 사용자가 자신의 이미지를 사이트에 업로드하고 공용 폴더에 저장할 수있는 양식을 사용하려고합니다. 'put'메소드로 Storage 파사드를 사용하려고하면 경로가 반환되지만 이미지는 실제로 저장되지 않습니다.
if ($request->hasfile('images')) {
foreach ($request->file('images') as $file) {
$path = Storage::disk('public')->put('images', $file);
echo $path;
}
}
이것이 제가 사용하려는 코드입니다. 경로가 정상적으로 에코되고 파일 시스템 구성을 변경하지 않았습니다. 양식에서 입력 필드 이미지는 여러 파일을 제출할 수 있으며 양식에는 enctype="multipart/form-data"
. $file
변수는 인스턴스를 포함 Illuminate\Http\UploadedFile
.
내가 사용한 이전 코드는 다음과 같습니다.
if ($request->hasfile('images')) {
foreach ($request->file('images') as $file) {
$file->move(public_path('images'), $file->getClientOriginalName());
}
}
Laravel이 업로드 할 때 고유 한 파일 이름을 부여 할 수 있다면 이전 코드를 사용해도 괜찮겠지 만 Storage 파사드가있는 코드가 이미지를 제대로 저장하지 못하는 원인은 무엇입니까? put 함수가 그렇게 작동하지 않거나 내가 간과하는 것이 있습니까?
편집 : 그래서 이미지가 실제로 제대로 저장되고 있음을 알고 있습니다. public
폴더가 아닌 폴더 내부를보고 있었기 storage
때문에 두 번째 코드 예제가 '작동'했지만 첫 번째 코드는 아닙니다. Storage 파사드를 사용할 때 웹에서 이러한 파일에 액세스하려면 심볼릭 링크를 사용해야한다는 것을 깨달았습니다.
또한 Ubuntu 서버 또는 Windows 개발 시스템에서 스토리지 폴더에 대한 심볼릭 링크를 생성했는지 확인해야합니다.
사용할 수있는 Windows : mklink /j /path/to/laravel/public/youfolder /path/to/laravel/storage/youfolder
Ubuntu : ln -s /path/to/laravel/public/youfolder /path/to/laravel/storage/youfolder
확인 및 설정하려면 다음을 사용할 수도 있습니다. php artisan storage:link
도움이 되었기를 바랍니다
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다