#jquery #ajax
Вопрос:
Я использую croppie для обрезки и загрузки изображения на свой сервер, и проблема в том, что, когда я отправляю только обрезанное изображение, оно отлично работает, но когда я хочу добавить другую информацию в форму, все перестает работать…
Исходный код, который РАБОТАЕТ, вот этот:
$uploadCrop.croppie('result', {type:'canvas', size:'viewport'}).then(function(resp){
$.ajax({
url: "upload.php",
type: "POST",
data: { "image": resp },
success: function (data) { alert("ok"); }
});
});
И файл PHP выглядит так:
<?php
$data = $_POST['image'];
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$imageName = time().'.png';
file_put_contents('img/profiles/'.$imageName, $data);
?>
Это работает идеально, изображение сохраняется правильно, но когда я использую этот код ниже с тем же файлом PHP, перестает работать…
var cropped_img;
var nameInfo = "Someone";
var mailInfo = "anything@mail.com";
$uploadCrop.croppie('result', {type:'canvas', size:'viewport'}).then(function(resp){cropped_img = resp;});
var parametros = new FormData();
parametros.append('name', nameInfo);
parametros.append('mail', mailInfo);
parametros.append('image', cropped_img);
$.ajax({
url: 'upload.php',
data: parametros,
type: 'post',
cache: false,
contentType: false,
processData: false,
success: function (response) { alert("ok") }
});
В первый раз, когда я попытался, это не сработало, поэтому я добавил кэш, тип содержимого и данные процесса и начал сохранять файл, но это своего рода пустой или поврежденный файл…
Кто-нибудь знает, как я могу это исправить?! Заранее спасибо.
Комментарии:
1. Что именно вы подразумеваете под «вроде как пустым»?
2. Я нахожу файл изображения в папке с правильным именем и расширением, но когда я загружаю его и открываю, программа просмотра изображений ничего не показывает, и я также не могу открыть его с помощью какого-либо редактора фотографий… и размером 0 байт.
3. Видите Ли Вы Какую-Либо Ошибку В Своей Консоли JS?
4. Если я удалю ContentType и ProcessData false для обоих, я получу «Ошибка недопустимого вызова неучтенного типа».