2

以下代码试图强加一组定制的要求,如下所述。我正在使用

Jquery 文件上传小部件在这里

我正在尝试将上传限制为文件集结构,并将此文件集作为单个多部分 HTTP 上传发送到我们的服务器。我已设法通过绑定到“fileuploadchange”来强制执行此文件集,其中用户仅限于将某些文件类型添加到上传队列(在这种情况下,他们一次只能上传 1 个 TXT 文件和 1 个 WAV 文件,不允许其他组合)。我的问题是使用绑定到“fileuploadsubmit”来启动上传。如果用户在单个选择实例中同时选择 TXT 和 WAV 文件,则可以正常工作,但是如果他们选择每个文件作为单个文件选择实例,则仅上传选择的第二个文件。

.bind('fileuploadsubmit', function (e, data) {
        if($(".template-upload").length == 2){
            if(sent > 3){
                alert("Upload processing in progress. To upload another File-Set, please reset the form.");
                return false;
            }else if(sent == 3){
                sent++;
                return false;
            }else{
                if((data.files.length == 2)&&(sent == 0)){//Both files selected at once and work fine.
                    all_data = data;
                    sent = 2;
                }
                
                if(sent == 0){//get 1st file from single file selection and add to Global all_data variable for submission
                    all_data = data;
                    sent++;
                    return false;
                }else if(sent == 1){//get 2nd file from single file selection and add to Global all_data variable for submission
                    all_data['files'].push(data['files'][0]);
                    all_data['context'].push(data['context'][0]);
                    all_data['paramName'].push(data['paramName'][0]);
                    sent++;
                }
                
                if(sent == 2){//Only send when 2 files have been prepared in Global all_data variable
                    $("#loader_response").html("UPLOADING....");
                    sent++;
                    var jqXHR = all_data.submit();
                }
            }
        }else{
            alert("Only a file-set can be uploaded." + file_set_message);
            return false;
        }
    })

任何帮助将不胜感激,使其按需要工作。

提前致谢。

编辑:修复问题如下:

              }else if(sent == 1){//get 2nd file from single file selection and add to Global all_data variable for submission
                data['files'].push(all_data['files'][0]);
                data['context'].push(all_data['context'][0]);
                data['paramName'].push(all_data['paramName'][0]);
                sent++;
              }

后跟一个 data.submit() 不是 all_data.submit()

进一步编辑: data.submit() 更改会导致 JQuery“递归过多”错误。一起删除提交调用,因为它将在方法正确结束时默认调用。

4

0 回答 0