干预/图像上传错误{{图像来源不可读}}

时间:2016-03-22 14:57:21

标签: php image file-upload laravel-5.1 intervention

我正在尝试在 Laravel 5.1 中添加个人资料图片上传。我使用了Response包,但是当我尝试上传图片时出现此错误:

  

AbstractDecoder.php第302行中的NotReadableException:图像源不可读

这是我的PhotoController:

Intervention/Image

这是我的html表单:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Image;
use Input;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class PhotoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index() {}

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create() {}

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $img = Image::make($request->file('photo')); 
        $img->save('image.png');  
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id) {}

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id) {}

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id) {}

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id) {}
}

3 个答案:

答案 0 :(得分:12)

在表单标记中添加以下参数:

enctype="multipart/form-data"

在make中改变这个:

$img = Image::make($request->file('photo')->getRealPath());

答案 1 :(得分:3)

这不是要回答OP的问题,而是要回答其他人,他们在这里遇到的问题是不同的上下文。

如果您使用的是storeAs()之类的文件系统方法,则实际上是从/storage/app/public/范围内的/public/上载文件。如果是这样,您将需要运行以下命令:

php artisan storage:link

此命令将创建一个指向/storage目录下的/public目录的快捷链接,并且一切正常。

答案 2 :(得分:1)

尝试使用laravel collective,如果使用laravel collective,请确保已将文件检查为true

replyTo

,然后在商店函数中请求您的文件时添加getRealPath(),如{{ Form::open(['route'=>'your-route', 'class'=>'form',**'files'=>true**]) }} {{ Form::close()}}`