BlueImp Jquery上传 - 从data.files获取索引

时间:2012-11-02 23:49:39

标签: javascript jquery blueimp

如何从以下代码中获取索引值?

add: function (e, data) {
    $.each(data.files, function (index, file) {
        alert('Added file: ' + index + " -- " + file.name);
});

即使我有(3)个文件,INDEX总是返回(0)。 FILE.NAME有效,我可以看到所有(3)个文件。

这是输出:

  • 添加文件:0 - dog.jpg
  • 添加文件:0 - cat.jpg
  • 添加文件:0 - honeybadger.jpg

这是我期待/期望的结果:

  • 添加文件:0 - dog.jpg
  • 添加文件:1 - cat.jpg
  • 添加文件:2 - honeybadger.jpg

经过一些调试后,似乎表单提交了(3)次,这就是我为每个文件得到(0)的原因。另外,我复制了GIT WIKI的代码,但没有运气。

希望BlueImp专家可以提供帮助。

更新代码: 下面的代码现在返回每个索引

$('#fileUpload1').fileupload(
{
    replaceFileInput: false,
    dateType: 'json',
    url: 'Handlers/AjaxFileHandler.ashx',
    singleFileUploads: false,
    autoUpload: false,
    add: function (e, data) {
        $('#upLoadButton').click(function () {
            $.each(data.files, function (index, file) {
                alert('Added file: ' + index + " -- " + file.name);

                var v = $('input[data-id=' + index + ']').val();
                var d = $('select[data-id=' + index + ']').val();
                alert('textField:' + v + '  selected: ' + d);               
            });

            data.submit();

        });
    },
});

});

1 个答案:

答案 0 :(得分:3)

您没有正确使用Add方法函数回调。 实际上,默认情况下会为每个单个文件触发此事件。表示文件的数据不是文件数组。 您需要将singleFileUploads设置为false才能获得所需内容,如下例所示:

$('#fileupload').fileupload({
        previewSourceMaxFileSize: 0,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png|bmp|svg|wmv|avi|mpe?g|mp4|ppt|pps)$/i,
        global:false,
        singleFileUploads:false, //set this to false to handle multi files upload behaviour
        add:function (e, data) {
            $.each(data.files, function (index, file) {
                alert('Added file: ' + index + " -- " + file.name);
            });
        },
        autoUpload: false
    });