Laravel:如何将图像保存到公用文件夹?

时间:2017-10-12 12:59:55

标签: laravel upload

我无法将用户图片上传到公用文件夹。文件名生成正确,并将名称保存到我的数据库,除了iamge本身拒绝保存到我的公用文件夹。我做错了什么?

  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();

  }

3 个答案:

答案 0 :(得分:0)

  

公用磁盘适用于可公开访问的文件。默认情况下,public磁盘使用本地驱动程序并将这些文件存储在storage/app/public中。要通过网络访问它们,您应创建从public/storagestorage/app/public的符号链接。此约定将使您可公开访问的文件保存在一个目录中,可以在部署中轻松共享。

     

要创建符号链接,您可以使用storage:link Artisan命令:

php artisan storage:link

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

答案 1 :(得分:0)

我想你应该试试这个:

$destinationPath = public_path('uploads');

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

答案 2 :(得分:0)

首先,您必须将图像移动到目标目录,然后调整其大小。

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

注意

检查您移动文件的目录是否已存在。