2017-05-27 3 views
1

Ich habe API-basierte Bild-Upload-Funktion. Ich habe das Projekt in einer Subdomain hochgeladen. enter image description hereBild Upload gibt 500 in Laravel 5.4

Meine js (AngularJS):

var data = new FormData(); 

     data.append('picture', $scope.picture); 
     data.append('title', $scope.title); 
     data.append('description', $scope.description); 
     data.append('captured_by', $scope.captured_by); 

     $http.post('api/SaveGallery',data,{ 
      withCredentials: true, 
      headers: {'Content-Type': undefined }, 
      transformRequest: angular.identity 

     }).then(function (data) { 
      console.log(data) 

Mein Controller:

use Illuminate\Http\Request; 

use Session; 
use DB; 
use Illuminate\Database\Eloquent; 
use Illuminate\Support\Facades\Auth; 
use Exception; 
use Response; 

use Image; 
use File; 

    public function SaveGallery(Request $r) 
{ 
    if ($r->hasFile('picture')) { 
     $image = $r->file('picture'); 
     $imageName = $image->getClientOriginalName(); 
     $destinationPath = public_path('images/Gallery'); 


     $img = Image::make($image->getRealPath()); 
     $img->encode('jpg')->save($destinationPath . '/' . $imageName); 

     DB::table('gallerys') 
      ->insert([ 
       'title' => $r->title, 
       'picture'=> $imageName, 
       'description' => $r->description, 
       'captured_by' => $r->captured_by=='undefined'?'Famous Bag':$r->captured_by, 
       'create_by' => Auth::user()->username, 
       'create_date' => date('Y-m-d H:i:s') 
      ]); 

     return Response::json(['succ' => 'added'], 200); // Status code here 

} else { 
     // $imageName = null; 
     return Response::json(['picnotfound' => 'picnotfound'], 201); // Status code here 
    } 

} 

Aber wenn ich versuche, Bild hochladen, es gibt 500 Server-Fehler! Ich möchte das Bild in Bildern/im Galeriepfad speichern. Wenn ich $ DestinationPath Rückkehr in Konsole zu testen, gibt sie: enter image description here Wenn ich diese Zeile löschen: img = Bild $ :: machen (image- $> getRealPath()); $ IMG-> kodieren ('jpg') - > speichern ($ destinationPath. '/'. $ imageName);

, ist es in Ordnung, aber Bild in nicht in dem Ordner gespeichert. Ich denke Bildpaketproblem. Ich habe base_path anstelle von public_path versucht, da sich mein Ordner nicht im öffentlichen Ordner befindet. HINWEIS: Alles ist in meinem lokalen Host in Ordnung

Antwort

0

Der $ destinationPath sollte Bilder/Gallary sein, In Ihrer Verzeichnisstruktur gibt es keinen öffentlichen Ordner. Machen Sie ein öffentliches Verzeichnis und verschieben Sie Ihre Bilder/gallary Ordner im Inneren oder auch ändern, um Ihre Zielpfad als

$ DestinationPath = base_path (‚images/galary‘);

Bitte lassen Sie mich für alle Fragen wissen!

+0

ich erwähnt, dass ich verwendet base_path() scheiterte aber. Wenn ich base_path() benutze und lösche das: $ img = Bild :: make ($ image-> getRealPath()); $ img-> encode ('jpg') -> speichern ($ destinationPath. '/'. $ ImageName); und schreibe move ($ destinationPath, $ imageName); und verwenden Sie base_path(), dann das Bild im Ordner root images/Gallery gespeichert. Aber ich muss das Bild unter Verwendung des Pakets, genannt Intervention, vergrößern. – Fawel

0

Heyy! Versuche dies!

@switch ($friend['reqs_status'])    
 
@case 0:    
 
//show button already request sent     
 
@breakcase;    
 
@case 1:    
 
    //show accept and reject request button    
 
    @breakcase;   
 
    @case 2:     
 
    //meaning they are friends already    
 
    @default:    
 
    # code...     
 
    @breakcase;  
 
     @endswitch

0

$ img = Bild :: machen (image- $> getRealPath());

Diese Funktion macht Bild aus dem tatsächlichen Pfad, so dass Sie zuerst in Temperorordner speichern und dann mit Intervention ändern müssen.

$ img = Bild :: machen ("images/temp/filename.ext");