2017-10-12 56 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/storagestorage/app/public的符号链接。此惯例将您的可公开访问的文件保存在一个可轻松在部署中共享的目录中。

要创建符号链接,你可以使用storage:link工匠命令:

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

首先,你必须移动你的图像到目的地目录,然后调整它的大小。

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

注意

检查你移动你的文件中,有已经存在的目录。

+0

当我这样做时,它不会正确地移动图像:我最终得到一个带有图像名称(sakjdha.jpg)的文件夹,然后是它内部的一个jibberish文档(ASCII),结果(1/1)NotReadableException 无法找到文件()。 – jlim

相关问题