使用Laravel 4进行干预\ Image \ Exception \ NotWritableException

时间:2014-07-16 03:55:27

标签: php laravel

我正在使用Laravel 4.我不知道为什么在一切似乎都正确时我会收到此错误。此外,产品未更新到数据库。

无法将图像数据写入路径(E:\ wamp \ www / E:\ wamp \ www / img / products / 1405482517.jpg)

的ProductsController

public function postCreate()
{
    $validator = Validator::make(Input::all(), Products::$rules);

    if($validator->passes())
    {
        $products = new Products();
        $products->category_id = Input::get('category_id');
        $products->title = Input::get('title');
        $products->description = Input::get('descroption');
        $products->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(public_path($path));

        $products->image = 'img/products/'.$filename;
        $products->save();

        return Redirect::to('admin/products')
            ->with('message', 'Products added success');

    }else

    return Redirect::to('admin/products')
        ->with('message', 'Something went wrong')
        ->withErrors($validator)
        ->withInput();
}

1 个答案:

答案 0 :(得分:1)

确保您拥有public/img/products文件夹的正确权限,例如:您终端中的chmod 775 public/image/products

另一件事是,你正在做两次public_path(),这导致你的代码试图保存到:

E:\wamp\www/E:\wamp\www/img/products/1405482517.jpg

而不是

E:\wamp\www/img/products/1405482517.jpg

因此错误消息:"无法将图像数据写入路径( E:\ wamp \ www / E:\ wamp \ www /img/products/1405482517.jpg)"

要解决此问题,这是导致问题的代码部分:

$path = public_path('img/products/' . $filename);
Image::make($image->getRealPath())->resize(468, 249)->save(public_path($path));

您必须尝试删除上面两个public_path()中的一个。

当然,您没有在数据库中看到您的产品,因为在$products->save();执行之前会抛出异常。