我一直在研究这段代码,现在试图让它正常工作。我想限制使用上传更多2张图片。
它给出了Uncaught TypeError错误的行var upa = $('.uploader').plupload('getUploader');
:对象[object Object]没有方法'plupload'
var maxfiles=2;
$('.uploader').each(function(){
var $uploader = $(this);
$uploader.pluploadQueue($.extend({
runtimes: 'html5,flash,html4',
url : '../admin/extras/upload.php',
max_file_size : '2mb',
chunk_size : '2mb',
unique_names : true,
filters : [
{title : "Image files", extensions : "jpg"}
],
resize : {width : 800, height : 600, quality : 90},
flash_swf_url : 'js/mylibs/forms/uploader/plupload.flash.swf',
init : {
FilesAdded: function(up, files) {
plupload.each(files, function(file) {
if (up.files.length > maxfiles) {
up.removeFile(file);
}
var upa = $('.uploader').plupload('getUploader');
var i = 0;
while (i<=upa.files.length) {
ultimo = upa.files.length;
if (ultimo > 1) {
if (i > 0) {
ultimo2 = ultimo - 1;
ii = i-1;
if (ultimo2 != ii) {
if (up.files[ultimo - 1].name == upa.files[i-1].name) {
up.removeFile(file);
}
}
}
}
i++;
}
});
if (up.files.length >= maxfiles) {
$('#uploader_browse').hide("slow");
}
},
FilesRemoved: function(up, files) {
if (up.files.length < maxfiles) {
$('#uploader_browse').fadeIn("slow");
}
}
}
}));
$uploader.find('.plupload_button').addClass('button grey btn');
$uploader.find('.plupload_add').addClass('icon-plus');
$uploader.find('.plupload_start').addClass('icon-ok');
});
上传图片时会产生错误。我不知道我错过了什么,但对此的任何帮助都非常感谢。
答案 0 :(得分:17)
我想要在while (i<=upa.files.length) {
区块中实现的目标并不清楚。好像你的页面上有几个上传者,但我无法理解这个想法。
无论如何,我想这应该可以解决,在一个上传器中最多限制为2个文件。
FilesAdded: function(up, files) {
var maxfiles = 2;
if(up.files.length > maxfiles )
{
up.splice(maxfiles);
alert('no more than '+maxfiles + ' file(s)');
}
if (up.files.length === maxfiles) {
$('#uploader_browse').hide("slow"); // provided there is only one #uploader_browse on page
}
},
希望这会有所帮助
答案 1 :(得分:7)
好回答jbl。 我稍微调整了你的解决方案,使其更通用,并在需要时重新出现“添加文件”按钮。
uploader.bind('FilesAdded', function(up, files) {
if (up.files.length >= up.settings.max_files) {
up.splice(up.settings.max_files);
$(up.settings.browse_button).hide();
}
});
uploader.bind('FilesRemoved', function(up, files) {
if (up.files.length < up.settings.max_files) {
$(up.settings.browse_button).show();
}
});
max_files
是pluploadQueue设置的一部分
$("#uploadBox").pluploadQueue({
...
max_files: 2,
...
});