我会小心声明一个文件复制只是基于名称。至少应该考虑到大小。尽管在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;
});
我已经添加了答案。另外,请确保您的代码中没有任何尾随逗号。如果遇到这些问题,IE7将会禁用。 – 2013-05-09 21:58:12
@RayNicholus谢谢你的回答。我希望你知道我确实将库升级到了最新版本,正如你所说,一切正常(除了我修改的一些css规则,嘿嘿)。 到目前为止,我有这样的东西:http://jsfiddle.net/cotoadvance/6NgqE/ 它工作正常,但我得到这个错误:'未捕获TypeError:无法转换为空对象'当我使用'重置'功能。 – 2013-05-10 19:16:09
Jose - Fine Uploader尝试在处理程序返回后完成处理上载操作时弹出问题,但处理程序调用“reset”,该操作会清除与该文件关联的任何状态。你可以[在Github项目中打开一个bug报告](https://github.com/Widen/fine-uploader/issues/new),这样我们可以再讨论一下吗?错误不应该给你带来任何问题,但应该处理。我想了解更多关于你为什么要在这里调用'reset'的信息。另外,如果它对您有帮助,请将我的答案标记为“已接受”。 – 2013-05-10 19:26:40