2013-05-09 65 views
3

说我想一次上传多个文件,这是一件好事设置多个选项设置为true时,我可以这样做:FineUploader多次上传同一文件在同一时间

var myUploader = new qq.FineUploader({ 
    element: $('#test')[0], 
    multiple: true, 
    request: { endpoint: 'path/to/master/server/php/' }, 
    autoUpload: false, 
}); 

现在,让我们说我有一个按钮可以让我选择要上传的文件。如果我点击上述按钮并选择test.txt文件,test.txt将被添加到将要上传的文件列表中。到现在为止还挺好。现在,我的问题是,如果再次单击该按钮,并再次选择test.txt文件,它将被添加到列表中,即使它已经在列表中。

有没有办法阻止FineUploader让我这样做?

在此先感谢

+1

我已经添加了答案。另外,请确保您的代码中没有任何尾随逗号。如果遇到这些问题,IE7将会禁用。 – 2013-05-09 21:58:12

+0

@RayNicholus谢谢你的回答。我希望你知道我确实将库升级到了最新版本,正如你所说,一切正常(除了我修改的一些css规则,嘿嘿)。 到目前为止,我有这样的东西:http://jsfiddle.net/cotoadvance/6NgqE/ 它工作正常,但我得到这个错误:'未捕获TypeError:无法转换为空对象'当我使用'重置'功能。 – 2013-05-10 19:16:09

+1

Jose - Fine Uploader尝试在处理程序返回后完成处理上载操作时弹出问题,但处理程序调用“reset”,该操作会清除与该文件关联的任何状态。你可以[在Github项目中打开一个bug报告](https://github.com/Widen/fine-uploader/issues/new),这样我们可以再讨论一下吗?错误不应该给你带来任何问题,但应该处理。我想了解更多关于你为什么要在这里调用'reset'的信息。另外,如果它对您有帮助,请将我的答案标记为“已接受”。 – 2013-05-10 19:26:40

回答

3

我会小心声明一个文件复制只是基于名称。至少应该考虑到大小。尽管在IE9及更高版本中这是不可能的,因为我们无法在这些浏览器中确定客户端的文件大小。只是为了简单起见,让我们专门使用文件名...

一种方法是维护提交给上传器的文件名数组。您可以在您的onSubmitted处理程序中添加到此列表中。您可以贡献一个onValidate处理程序,该处理程序会在文件已存在于数组中的情况下拒绝该文件。您的代码会是这个样子:

var filenames = []; 
var myUploader = new qq.FineUploader({ 
    element: $('#test')[0], 
    multiple: true, 
    request: { endpoint: 'path/to/master/server/php/' }, 
    autoUpload: false, 
    callbacks: { 
     onSubmitted: function(id, name) { 
      filenames.push(name); 
     }, 
     onValidate: function(fileData) { 
      return qq.indexOf(filenames, fileData.name) < 0; 
     } 
    } 
}); 

此外,只是踢,为什么不使用精细上传的jQuery插件,因为你似乎在你的项目中已经使用jQuery?上面的示例使用下面的jQuery插件进行了重写:

var filenames = []; 
$('#test').fineUploader({ 
    multiple: true, 
    request: { endpoint: 'path/to/master/server/php/' }, 
    autoUpload: false 
}) 
    .on("submitted", function(event, id, name) { 
     filenames.push(name);  
    }) 
    .on("validate", function(event, fileData) { 
     return $.inArray(fileData.name, filenames) < 0; 
    }); 
+0

@ jk-jk我不确定是谁拒绝了你的编辑(这不是我),但它是完全有效的,所以我根据你提出的编辑来编辑帖子(我还添加了语法高亮)。感谢您捕捉(反转'.inarray'参数)。 – 2013-07-16 02:58:18

+0

此代码取消所有文件,如果其中一个是重复的。我怎样才能取消重复文件,但让其他选定的文件自动上传正常? – 2016-02-25 13:33:21

+0

@ Alph.Dev此代码只会取消重复的文件。 – 2016-02-25 13:35:59

相关问题