2016-03-22 41 views
6

Próbuję dodać zdjęcie do przesłania profilu w Laravel 5.1. Użyłem Intervention/Image pakiet, ale gdy próbuję przesłać obraz otrzymuję ten błąd:Błąd interwencji/przesyłania obrazu {{Nieznane źródło obrazu}}

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

To mój 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) {} 
} 

To moja forma 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

podaj docelową ścieżkę do pliku wewnątrz metody zapisu –

Odpowiedz

8

Dodaj następujący parametr w tagu formularza:

enctype="multipart/form-data" 

A zmieni się to w makijażu:

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

Wielkie dzięki Thiago Alves. – arispapapro

1

Spróbuj użyć laravel Collective, upewnij się, że zaznaczone pliki true jeśli używasz laravel zbiorowej

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

, a następnie przy żądaniu plik w funkcjonowaniu sklepu dodać getRealPath() tak Image::make(Input::file('artist_pic')->getRealPath())->resize(120,75);