2017-10-12 16 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に格納します。 Webからアクセスできるようにするには、public/storageからstorage/app/publicまでのシンボリックリンクを作成する必要があります。このコンベンションでは、公開されているファイルを1つのディレクトリに保存し、複数の配備で簡単に共有できます。私はあなたがこれを試すべきだと思い

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

関連する問題