2016-03-22 56 views
6

我想添加个人资料图片上传Laravel 5.1。我用了Intervention/Image包,但是当我尝试上传的图片我得到这个错误:干预/图片上传错误{{图片源不可读}}

NotReadableException in AbstractDecoder.php line 302: Image source not readable

这是我PhotoController:

<?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) {} 
} 

这是我的HTML表单:

<header> 
    <div class="student_profile_sub_header w100"> 
     <div class="container ccenter"> 
      <div class="student_profile_name"> 
       <h4>{{$student->name}} {{$student->surname}}</h4> 
      </div> 
      <div class="student_profile_image"> 
       <img src="{{asset('assets/profile_image.png')}}"> 
      </div> 

      <form method="POST" action="../student/profile/imageupload"> 
       {!! csrf_field() !!} 
       <input type="file" name="photo"> 
       <input type="submit" value="Upload Image" name="submit"> 
       @foreach($errors->all() as $error) 
        <li>{{ $error }}</li> 
       @endforeach 
      </form> 
     </div> 
    </div> 
</header> 
+0

在保存方法内提供您的目标文件路径 –

回答

8

添加以下参数在你的表单标签:

enctype="multipart/form-data" 

和更改这个在化妆:

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

非常感谢Thiago Alves。 – arispapapro

1

尝试使用laravel集体,确保你已经选中的文件为真,如果你使用的是laravel集体

{{ Form::open(['route'=>'your-route', 'class'=>'form',**'files'=>true**]) }} 
{{ Form::close()}}` 

,然后请求在存储功能的文件时添加getRealPath()这样的Image::make(Input::file('artist_pic')->getRealPath())->resize(120,75);