我正在尝试使用Laravel保存图像
图像以tmp文件的形式保存在数据库中,为什么呢?
在数据库中另存为C:\ xampp \ tmp \ phpA3EB.tmp的图像
我该如何解决?
在控制器中:
public function update(Request $request, Bank $bank)
{
if ( isset($request->photo) && $request->photo ) {
$request['image'] = UploadImage($request->file('photo'), 'bank', '/banks');
@unlink(public_path('/uploads/banks/') . $bank->image);
}
$updated = $bank->update($request->all());
$bank->updateTranslations([
'name' => $request->get('name_en'),
]);
return $updated ?
redirect()->route('banks.index')->with('success', trans('messages.updateTrue')) :
redirect()->back()->with('warning', trans('messages.updateFalse'));
}
function UploadImage($inputRequest, $prefix, $folderNam)
{
$imageName = $prefix.'_'.time().'.'.$inputRequest->getClientOriginalExtension();
$destinationPath = public_path('/uploads/'.$folderNam);
$inputRequest->move($destinationPath, $imageName);
return $imageName ? $imageName : false;
}
答案 0 :(得分:0)
请尝试以下方法:
public function UploadImage($image, $path)
{
$type = $image->getMimeType();
$ext = substr($type, 6, strlen($type) -1 );
$picName = uniqid() . '.' .$ext;
$image->move(public_path($path), $picName);
return $path . '/' . $picName;
}
}
答案 1 :(得分:0)
请尝试:
public function UploadImage($image, $prefix, $path)
{
$ext = $image->extension();
$filename = $prefix.'_'.uniqid() . '.' .$ext;
$image->move(public_path('/uploads/'.$path), $filename);
return $filename;
}
答案 2 :(得分:0)
我也和我挣扎了一段时间。但是,我意识到我做的还不错,但是问题是如何在数据库中保存/创建它。
这是起作用的。
public function store(Request $request)
{
$request->validate([
'title'=>'required',
'features'=>'required',
'website'=>'required',
'img'=>'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$input=$request->all();
$imagePath=$request->file('img');
$imageName=time().'.'.$imagePath->getClientOriginalExtension();
$imagePath->move('uploads',$imageName);
$input['img']=$imageName;
Portfolio::create($input);
return Redirect::to('portfolio')->with('success','Great! Portfolio item created successfully.');
}