Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Intervention / Image Upload Error {{ Image source not readable }}

Tags:

I am trying to add a profile image upload in Laravel 5.1. I used the Intervention/Image Package but when I try to upload the image I get this error:

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

This is my 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) {} } 

This is my html form:

<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> 
like image 633
arispapapro Avatar asked Mar 22 '16 14:03

arispapapro


2 Answers

Add the following parameter in your form tag:

enctype="multipart/form-data" 

And change for this in make:

$img = Image::make($request->file('photo')->getRealPath()); 
like image 120
Thiago Alves Avatar answered Sep 17 '22 05:09

Thiago Alves


This is not to answer the OP's question, but to answer someone else's who is here with the same question with a different context.

If you are using File System method like storeAs() then you are actually uploading your file under /storage/app/public/ from /public/ scope. If so, you will need to run the following command:

php artisan storage:link 

This command will create a shortcut link to the /storage directory under /public directory, and things should work normal.

like image 30
Mayeenul Islam Avatar answered Sep 20 '22 05:09

Mayeenul Islam