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.имя_раздела

Другие вопросы по тегам