首页 文章

Laravel 5.6上传图片

提问于
浏览
0

我想用laravel上传图片:我在mysql中创建了这个字段:

imagepath varchar 250

创建表单:

<form  method="post" id="formId" action="/ticket" enctype="multipart/form-data">
    {{ csrf_field() }}
    <div class="form-group ">...other fields
       <div class="form-group">
           <input type="file" class="form-control-file" name="imageFile" id="imageFile" aria-describedby="fileHelp">
       </div>

在我的控制器中:

public function store(Request $request)
{
    $fileName = request()->imageFile->getClientOriginalExtension();
    dd($fileName);//echos ".jpg"
    $tickes = Users::create(['imagePath' => $fileName]);
}

但是我的db总是为null!我想将它存储在Laravel的公共/存储文件夹中 . 请帮忙!

2 回答

  • 1

    您可以使用此代码将图像上传到`public / storage /目录:

    if ($request->hasFile('input_img')) {
        if($request->file('input_img')->isValid()) {
            try {
                $file = $request->file('input_img');
                $name = rand(11111, 99999) . '.' . $file->getClientOriginalExtension();
    
                # save to DB
                $tickes = Users::create(['imagePath' => 'storage/'.$name]);
    
                $request->file('input_img')->move("storage", $name);
            } catch (Illuminate\Filesystem\FileNotFoundException $e) {
    
            }
        }
    }
    
  • 0
    • 此代码仅保存文件扩展名,而不保存图像路径 .

    • 在数据库获取路径之前,您需要将文件保存到存储 . Laravel有很好的文档,这个链接可以帮助你解决这个问题 . https://laravel.com/docs/5.6/filesystem

相关问题