【问题标题】:File upload progress not stoping on server error文件上传进度未因服务器错误而停止
【发布时间】:2014-06-13 21:34:45
【问题描述】:

我目前正在开发一个需要上传文件输入的项目,我根据我在这个网站上看到的一些示例实现了该输入,它工作正常。

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

【问题讨论】:

  • 在网络选项卡中你可以点击与此功能相关的url upload 在这种情况下并单击它,然后查看response选项卡,它输出了什么null ???
  • 网络响应是 {succes:false} 从服务器获得。

标签: jquery file upload jqxhr


【解决方案1】:

一旦服务器收到请求,文件已经上传,现在告诉用户他们不能上传已经太晚了。您可以先进行一次 ajax 调用以检查用户是否可以上传,然后如果他们有权限,则进行上述调用以上传文件。

要问自己一个问题是,如果用户没有上传权限,为什么要显示上传表单?

【讨论】:

  • 对用户来说是正确的,我会这样做,但我的问题也是,如果我上传一个大文件,比如说 600MO 并且由于任何原因服务器无法存储文件或者它需要什么long 有没有办法通过返回错误来停止客户端进程(在 xhr 上调用 abort 函数)?
  • 一旦服务器出现故障,进度条应该停止。
猜你喜欢
  • 2018-06-26
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多