我正在尝试将图像保存到数据库中,它正在移动到公用文件夹中,但是没有保存到数据库中。但是,除了图像以外,其他一切都正常。并且当调用save()方法时,它给了我下面的错误。。
这是我在控制器中尝试过的代码
$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');
答案 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无法访问服务器临时文件夹,则会出现该错误。
尝试使用较小的文件运行代码或更改服务器配置。
获得许可
PrivateTmp
可能设置为true,因此php无法看到apache的tmp。