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>
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());
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With