我正在使用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'];
}
如果上传成功,我只返回一个onComplete方法。我尝试使用responseJSON.responseText,我得到的只是“未定义”。
感谢您的帮助。
答案 0 :(得分: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。 keyname