我无法从我的文件删除处理程序返回自定义错误消息。我不确定,但看起来删除的处理方式与上传不同。
从文档:
您可以返回任何您喜欢的响应,因为 XMLHttpRequest 对象将被传递给您的 onDeleteComplete 处理程序以供进一步检查。但是,您返回的响应代码对 Fine Uploader 很重要,因为它使用它来确定删除是否成功。以下响应代码表示此特定请求的成功:200、202 和 204。任何其他响应代码都表示失败。
在我的删除服务器处理程序中,我有这个来捕获错误并将响应发送回 FineUploader。
catch (Exception ex)
{
//const string json = "{\"success\":false}";
const string json = "{\"success\":false,\"error\":\"THIS IS THE ERROR\"}";
//const string json = "{\"error\":\" HERE IS THE ERROR! \"}";
var response = (Response)json;
response.ContentType = "text/plain";
//response.StatusCode = HttpStatusCode.InternalServerError;
return response;
}
我已经尝试将{"success":false}
错误连同错误一起发回,只是{"success":false}
错误。我已经检查过 json 是否有效。然而,它似乎什么都不做。对 FineUploader 来说重要的是 response.StatusCode。如果我发送失败响应代码,FineUploader 会识别错误并显示该代码的消息。它还会在onError回调中以errorReason的形式返回。
如果我没有设置响应状态代码,它默认为 OK 并且不会引发错误。
我查看了 php 的示例代码,并在删除处理程序中看到了这一点:
if (is_dir($target)){
$this->removeDir($target);
return array("success" => true, "uuid" => $uuid);
} else {
return array("success" => false,
"error" => "File not found! Unable to delete.".$url,
"path" => $uuid
);
}
显然,该代码正在发回"success":fail
带有自定义错误消息的 a。但是我无法在该代码中计算出正在发回的响应状态。
更新 1:这是客户端上用于处理服务器响应的 js:
callbacks: {
onError: function(id, name, errorReason, xhrOrXdr) {
alert(qq.format("Error on file number {} - {}. Reason: {}", id, name, errorReason));
console.log(errorReason);
}
那么,我做错了吗?
更新 2:
好的,我看过了onDeleteComplete
,我的客户端代码现在看起来像这样:
callbacks: {
onDeleteComplete: function(id, xhr, isError) {
alert("onDeleteComplete => id is:" + id + " Is error?:" + isError);
},
onError: function(id, name, errorReason, xhrOrXdr) {
alert(qq.format("onError => Error on file number {} - {}. Reason: {}", id, name, errorReason));
console.log(errorReason);
},
现在,当我在浏览器中删除文件时,我onError
首先收到警报,然后是onDeleteComplete
. 在这两种情况下,我都找不到任何方法来显示我想从服务器处理程序发回的错误消息。onError
似乎总是只显示 HttpStatus 错误消息,而不是我的 json 响应中定义的错误消息。onDeleteComplete
没有参数可以恢复错误。