Merhaba kolay gelsin herkese,
Sabahtan beri uğraşıyorum sorunu buldum gibi lakin nedenini anlayamadım. Yapmak istediğim şey tinymce kullanarak image upload yapmak ve dönen location verisini içeriğe getirmek. tinymce example kodu üzerinden gitmek istedim xhr kullanarak post işlemi gerçekleştiriyorum. Controller'dan responseText dönmüyor düz echo "asdasd" bile yazdım response text vermiyor. Kodlar aşağıdadır.
Javascript :
images_upload_handler: function (blobInfo, success, failure, progress) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', "{{route('imageUploader')}}");
var token = "{{csrf_token()}}";
xhr.setRequestHeader("X-CSRF-TOKEN",token);
xhr.upload.onprogress = function (e) {
progress(e.loaded / e.total * 100);
};
xhr.onload = function() {
var json;
if (xhr.status < 200 || xhr.status >= 300) {
failure('HTTP Error: ' + xhr.status);
return;
}
console.log(xhr);
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.location);
};
xhr.onerror = function () {
failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);
};
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
xhr.send(formData);
}
Controller :
class ImageUploaderController extends Controller
{
public function process(Request $request){
try {
$_name = Storage::put('public/images/uploads',$request->image);
echo json_encode(array('location'=>$_name));
}catch (\Exception $e){
return false;
}
}
}
{"location" : "resim/yolu/nerede/ise"} bu şekilde bir dönüş bekliyor lakin responseText boş olduğu için JSON.parse çalışmıyor.
Edit :
return false 'a düşüyormuş ondan text felan yok daha yeni gördüm ya 😃 şimdi neden false 'a düşüyor ona bakayım.
Edit 2 : Arkadaşlar sorunu çözdüm $request->image olarak resim almaya çalışıyorum. javascriptten oluşan form file ismi ile gönderiyor muş
class ImageUploaderController extends Controller
{
public function process(Request $request){
try {
$_name = Storage::put('public/images/uploads',$request->file);
$_nameToPublic = "/storage/images/uploads/".basename($_name);
echo json_encode(array('location'=>$_nameToPublic));
}catch (\Exception $e){
abort(500);
}
}
}