如何解决laravel中保存图像的问题

时间:2019-11-01 10:30:42

标签: laravel

我正在尝试将图像保存到数据库中,它正在移动到公用文件夹中,但是没有保存到数据库中。但是,除了图像以外,其他一切都正常。并且当调用save()方法时,它给了我下面的错误。See the image for more information

这是我在控制器中尝试过的代码

$student=new Student;
        $student->name = $request->input('name');
        $student->username = $request->input('username');
        $student->email = $request->input('email');
        $student->password = bcrypt($request->input('password'));
        $student->gender = $request->input('gender');
        $student->phone = $request->input('phone');
        if($request->hasFile('image'))
        {
            $file=$request->File('image');
            $ext=$file->getClientOriginalExtension();
            $filename=$student->username . '.' . $ext;
            $file->move('images/',$filename);
            $student->image=$filename;
        }
        $student->save();
        $student->subjects()->attach($request->id);
        return back()->with('msg','Succesfully Added');

4 个答案:

答案 0 :(得分:3)

使用clientExtension()而不是getClientOriginalExtension(),并确保您的路径正确,在这里我定义了public路径。

if ($request->hasFile('image')) {
    $file = $request->image;
    $destinationPath = public_path().'/images/';
    $filename= $student->username . '.'.$file->clientExtension();
    $file->move($destinationPath, $filename);
    $student->image=$filename;

}

答案 1 :(得分:1)

1)确保已在表单中添加了enctype =“ multipart / form-data”,并添加了字段名称为“ image”

2)在您的控制器中

if( $request->hasFile('image')) {
    $image = $request->file('image');
    $path = public_path(). '/images/';
    $filename = $student->username . '.' . $image->getClientOriginalExtension();
    $image->move($path, $filename);
    $student->image=$filename;
}
    $student->save();

答案 2 :(得分:0)

请在Controller顶部添加Imagick。

use Imagick;

答案 3 :(得分:-2)

如果上传遇到问题(主要是由于其大小)或www-data无法访问服务器临时文件夹,则会出现该错误。

尝试使用较小的文件运行代码或更改服务器配置。

获得许可

  • 可能是www-data没有阅读权限。
  • 在您的systemd配置中,PrivateTmp可能设置为true,因此php无法看到apache的tmp。