我目前正在开发一个需要上传文件输入的项目,我根据我在此站点上看到的一些示例实现了该输入,并且工作正常。
function send(file){
var fd = new FormData();
fd.append(file.name, file);
$.ajax({
url: 'upload',
type: 'POST',
enctype: "multipart/form-data",
xhr: function xhr() {
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', function(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
percentComplete = parseInt(percentComplete * 100, 10);
progress.setValue(percentComplete);
}
}, false);
}
return myXhr;
},
beforeSend: beforeSend,
success: onComplete,
error: onError,
// Form data
data: fd,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
});
}
但是,有一件事效果不佳,我很想知道是否有人对此有很好的解释。在 java 服务器端,我的 servlet 检查是否允许用户上传文件,如果没有,则返回 success=false 或其他任何内容。奇怪的是,进度条仍在进行中,就像服务器将上传它一样,当进度完成时我只收到错误消息。这真的很奇怪,我的期望是进度不会开始,或者应该在返回错误时取消。当然,我可以在开始发送之前检查用户,但是我做了第二次,在没有终点的 ajax 中输入了一个错误的 URL,它仍然显示进度直到结束,如果它是一个大文件需要一段时间有时会冻结浏览器。有没有办法在服务器错误的进程中更早地停止进程。在谷歌搜索几个小时后找到解决方案会很棒,但没有找到有同样问题的人问候 JP