0

我正在使用 Valums FileUploader,但在上传文件后无法获取和读取响应。基本上,我试图获得一个有用的响应以在 onComplete 中使用,无论是成功还是错误消息。

我在这里发现了另一篇文章,说服务器可能需要设置为内容类型纯文本/文本。我检查了一下,确实是这样的设置。

无论如何,一直在做很多搜索并找到各种要检查的东西,但似乎还没有解决我的问题。

以下是上传者的一些缩写代码:

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 设置为小以抛出错误只是为了尝试获取消息。

我将上传器 zip 中包含的 php.php 文件复制并重命名,然后在末尾添加:

$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,但我得到的只是“未定义”。

谢谢您的帮助。

4

1 回答 1

0

找到了解决方案...

首先,在 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。键名

于 2014-05-31T10:39:53.630 回答