2017-10-12 3 views
1

사용자 이미지를 공용 폴더에 업로드하는 데 문제가 있습니다. 파일 이름이 올바르게 생성되고 이름이 내 데이터베이스에 저장됩니다. 단, iamge 자체는 내 공용 폴더에 저장되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?Laravel : 이미지를 공용 폴더에 저장하는 방법?

public function update_avatar(Request $request) { 
    if($request->hasFile('avatar')) { 

    $avatar = $request->file('avatar'); 
    $filename = time() . "." . $avatar->getClientOriginalExtension(); 

    Image::make($avatar)->resize(300,300)->save(public_path('/uploads/'.$filename)); ==> This is causing me errors 

    user = Auth::user(); 
    $user->avatar = $filename; 
    $user->save(); 

    } 
+0

전혀 도움이 되나요? https://laracasts.com/discuss/channels/laravel/image-upload-using-storage-function-to-public-folder?page=1 –

+0

public_path ('/ uploads ...)는 무엇을 반환합니까? 저장하려고하는 경로는 무엇입니까? – JorenV

+0

어떤 오류가 발생합니까? 오류를 설명하십시오. 도와 드리겠습니다. –

답변

0

공공 디스크는 공개적으로 액세스 할 수하려고하는 파일을위한 것입니다. 기본적으로 public 디스크는 로컬 드라이버를 사용하고이 파일을 storage/app/public에 저장합니다. 웹에서 액세스 할 수있게하려면 public/storage에서 storage/app/public 사이의 심볼릭 링크를 만들어야합니다. 이 규칙에 따라 공개적으로 액세스 할 수있는 파일이 하나의 디렉토리에 보관되어 배포 전반에서 쉽게 공유 할 수 있습니다. 나는 당신이 시도해야한다고 생각

php artisan storage:link 

https://laravel.com/docs/5.5/filesystem

0

:

$destinationPath = public_path('uploads'); 

Image::make($avatar)->resize(300,300)->save($destinationPath.'/'.$filename); 
0

먼저 이동해야

심볼릭 링크를 만들려면 storage:link 장인 명령을 사용할 수 있습니다 이미지를 대상 디렉토리로 이동 한 다음 크기를 조정하십시오.

$avatar->move(public_path('/uploads/'.$filename)); 
Image::make(public_path('/uploads/'.$filename))->resize(300,300)->save(public_path('/uploads/'.$filename)); 

확인 당신이 거기에 이미 존재하는 파일을 이동하는 디렉토리.

+0

이렇게하면 이미지가 올바르게 이동하지 않습니다. 결국 이미지 이름 (sakjdha.jpg)이있는 폴더를 얻은 다음 그 안에 지껄 거리는 문서 (ASCII)가 표시되고 그 결과 (1/1) NotReadableException file()을 (를) 찾을 수 없습니다. – jlim

관련 문제