4

我已将 FineUploader 配置为使用 CORS 并使用我的 Amazon Web Services S3 存储桶。

我面临的问题是,成功上传不会返回任何响应内容(虽然状态码为 204,但响应内容为空)。因此,即使发生了上传(我已验证文件已上传),也会触发错误事件。大概是因为没有回应。

我该如何处理这种情况?有没有办法通过在“onError”回调中捕获此错误来手动触发“成功”?

编辑:

我在这里挖掘取得了一些进展。该错误似乎源于handler.xhr.js.

特别是在parseResponse(xhr)函数内部。

try{
   response = qq.parseJson(xhr.responseText);
}
catch(error) {
   log('Error when attempting to parse xhr response text (' + error + ')', 'error');
   response = {};
}

由于响应为空,这似乎引发了错误。

有谁知道正确的反应应该是什么?我正在考虑在此处添加一行检查空响应,然后手动插入正确的响应应该是什么。

4

1 回答 1

4

parseResponse()毕竟问题出在功能上。它期望成功的上传在成功上传后返回 JSON 字符串{"success": true}

在我的例子中,亚马逊返回一个带有 204 状态码的空响应。204 状态码意味着不需要响应

我已经通过修改我的编辑中提到的部分来解决这个问题,如下所示:

try {
            if(xhr.status == 204 && xhr.responseText.length == 0){
                response = qq.parseJson('{"success": true}');
            }
            else{
                response = qq.parseJson(xhr.responseText);
            }
}

希望这将帮助其他将来遇到此问题的人。

于 2013-04-09T09:30:42.430 回答