Ich habe API-basierte Bild-Upload-Funktion. Ich habe das Projekt in einer Subdomain hochgeladen. Bild 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: 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
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