使用干预编辑上传的图像

时间:2014-07-01 06:04:18

标签: php image function laravel upload

我正在添加编辑已在我正在构建的购物车应用上传的图片的功能。我可以上传图片。除了图像文件上传外,我还能完美地编辑每个字段。

我尝试在上传功能中使用相同的代码,基本上将现有的图像上传到另一个图像但是它不起作用并引发错误

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');
}

1 个答案:

答案 0 :(得分:0)

首先,File外观没有方法称为更新。

您必须重新处理图像才能更新它。

其次,错误是从上传中抛出的。这可能是因为图像没有通过表格正确发送。

确保您的表单上的文件属性已打开。

{{ Form::open(array('route'=> array('aroute'),'method' => 'post', 'files' => true)) }}

如果您的文件仍未发送,请检查您的php.ini设置,因为图片的文件大小可能会大于post_max_sizeupload_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);