Valums FileUploader не отвечает от сервера после загрузки
Я использую Valums FileUploader, и у меня возникают проблемы с получением и чтением ответа после загрузки файла. В основном я пытаюсь получить полезный ответ для использования в onComplete, будь то успех или сообщение об ошибке.
Я нашел еще один пост, в котором говорилось, что, возможно, сервер должен быть настроен на тип содержимого text / plain. Я проверил это, и это действительно так.
Как бы то ни было, я много искал и находил разные вещи для проверки, но, похоже, ничто еще не решило мою проблему.
Вот сокращенный код от загрузчика:
var uploader = new qq.FileUploaderBasic({
button: document.getElementById('btnUpChange'),
action: templateURL+'/upload.php',
allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
onSubmit: function(id, fileName) {
},
onComplete: function(id, fileName, responseJSON) {
var fileMsg = responseJSON;
console.log(fileMsg);
$('#filemsg').html('<span class="red" >'+fileMsg+'</span>');
}
});
А вот текст из консоли после загрузки:
"[uploader] xhr - server response received"
"[uploader] responseText = File is too large"
[object Object]
Я намеренно установил $ sizeLimit small, чтобы выдать ошибку, просто чтобы попытаться получить сообщение.
Я взял файл php.php, включенный в zip-файл загрузчика, скопировал и переименовал его, а затем добавил в конце:
$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif');
$sizeLimit = 4 * 1024;
$uploader = new qqFileUploader($allowedExtensions, $sizeLimit);
// Call handleUpload() with the name of the folder, relative to PHP's getcwd()
$result = $uploader->handleUpload('uploads/', $replaceOldFile = true);
if ($result['success'] !== true) {
echo $result['error'];
} else {
echo $result['success'];
}
Если загрузка прошла успешно, я просто возвращаю 1 в метод onComplete. Я попытался использовать responseJSON.responseText, и все, что я получил, было "неопределенным".
Спасибо за помощь.
1 ответ
Нашел решение этого...
Во-первых, на php.php я ставлю в конце этот код:
echo htmlspecialchars(json_encode($result), ENT_NOQUOTES);
Затем в функции onComplete ответ JSON может быть возвращен так:
onComplete: function(id, fileName, responseJSON) {
var newFile = responseJSON.filename;
var theError = responseJSON.error;
}
где имя ключа из массива ответов, созданного в php.php, может быть любым, и вам будет возвращено, как в следующем примере: responseJSON.имя_раздела