我正在添加编辑已在我正在构建的购物车应用上传的图片的功能。我可以上传图片。除了图像文件上传外,我还能完美地编辑每个字段。
我尝试在上传功能中使用相同的代码,基本上将现有的图像上传到另一个图像但是它不起作用并引发错误
Call to a member function getClientOriginalExtension() on a non-object
我正在使用Laravel框架进行干预,并进入干预的主要站点,并且它没有显示更新或编辑方法。它只显示删除方法。
我需要一些帮助来确定如何在postEdit函数中更新图像。
我真的已经尝试过我所知道的一切,并且已经用谷歌研究了这个并且无法解决这个问题。
我的问题在于这行代码:
File::update('public/'.$product->image);
感谢您的正确方向。
这是图片上传功能(效果很好)
public function postCreate() {
$validator = Validator::make(Input::all(), Product::$rules);
if ($validator->passes()) {
$product = new Product;
$product->category_id = Input::get('category_id');
$product->title = Input::get('title');
$product->description = Input::get('description');
$product->price = Input::get('price');
$image = Input::file('image');
$filename = time() . '.' . $image->getClientOriginalExtension();
$path = public_path('img/products/' . $filename);
Image::make($image->getRealPath())->resize(468, 249)->save($path);
$product->image = 'img/products/'.$filename;
$product->save();
return Redirect::to('admin/products/index')
->with('message', 'Product Created');
}
return Redirect::to('admin/products/index')
->with('message', 'Something went wrong')
->withErrors($validator)
->withInput();
}
这是我无法开始工作的编辑图片上传功能。
public function postEdit() {
$product = Product::find(Input::get('id'));
if ($product) {
File::update('public/'.$product->image);
$product->update(Input::all());
return Redirect::to('admin/products/index')
->with('message', 'Product Updated');
}
return Redirect::to('admin/products/index')
->with('message', 'Something went wrong, please try again');
}
答案 0 :(得分:0)
首先,File
外观没有方法称为更新。
您必须重新处理图像才能更新它。
其次,错误是从上传中抛出的。这可能是因为图像没有通过表格正确发送。
确保您的表单上的文件属性已打开。
{{ Form::open(array('route'=> array('aroute'),'method' => 'post', 'files' => true)) }}
如果您的文件仍未发送,请检查您的php.ini设置,因为图片的文件大小可能会大于post_max_size
或upload_max_filesize
中设置的值,大于该大小。
也改变了行;
$path = public_path('img/products/' . $filename);
到
$path = public_path() . 'img/products/' . $filename;
要通过干预编辑图像,您需要保存文件。
使用;
$image->move($path);
然后你可以做;
Image::make($path)->resize(468, 249)->save($path);