Javascript 阻止jQuery文件上载中的文件夹上载
我正在使用blueimp jQuery文件上载来上载文件()。我希望防止用户将文件夹拖到Google Chrome(或任何其他浏览器)的拖放区域。我尝试了多目录和多目录webkitdirectory选项。我不希望用户在任何浏览器(包括chrome)中删除文件夹Javascript 阻止jQuery文件上载中的文件夹上载,javascript,jquery,file-upload,blueimp,Javascript,Jquery,File Upload,Blueimp,我正在使用blueimp jQuery文件上载来上载文件()。我希望防止用户将文件夹拖到Google Chrome(或任何其他浏览器)的拖放区域。我尝试了多目录和多目录webkitdirectory选项。我不希望用户在任何浏览器(包括chrome)中删除文件夹 我们是否有阻止文件夹的选项?或者我们可以选择在文件夹出现之前将其压缩到拖放区吗?或者是否有可能显示一条警告消息,指示用户必须将文件夹转换为zip/rar并拖动?因此,我遇到了同样的问题。在Chrome上检测它的方法是查找data.orig
我们是否有阻止文件夹的选项?或者我们可以选择在文件夹出现之前将其压缩到拖放区吗?或者是否有可能显示一条警告消息,指示用户必须将文件夹转换为zip/rar并拖动?因此,我遇到了同样的问题。在Chrome上检测它的方法是查找
data.originalFiles.length>1
,在Firefox上查找data.files[0]。size==0
我尝试过设置minFileSize:1
,maxNumberOfFiles:1
(也设置getNumberOfFiles
),singleFileUploads:false
,以及limitMultiFileUploads:1
。。。但它们似乎都没有很好地工作,文档有点模糊,代码有点复杂
它们确实有一个validations()选项,但示例使用jQuery中不推荐的$.Deferred
方法
因此,我最终做了类似的事情(我删除了所有自定义内容和附加内容,使其更简单/切中要害):
基本上,如果它有多个文件或文件大小为0,则触发错误代码,而不是提交
jqXHR
数据。然后,重写fileupload
中的错误处理程序,以便也使用此错误处理程序,因为DRY。我找不到选项,但它更改了jquery.fileupload.js中的代码
}else if(entry.isDirectory){
//目录防拖
//dirReader=entry.createReader();
//readEntries();
}else{
代码“data.originalFiles.length”对我不起作用。当我使用行myJsonVin=JSON.stringify(data);var JSON_obj_vin=JSON.parse(myJsonVin);lenVin=JSON_obj_vin[“files”].length时,它显示了一个拖动文件夹中的文件数。这在Chrome中起作用,但在firefox(在Windows上)中不起作用。$(“#文件上传”).fileupload({url:'server/php/'}).on('fileuploaddrop',函数(e,data){myJsonVin=JSON.stringify(data);var JSON_obj_vin=JSON.parse(myJsonVin);lenVin=JSON_obj_vin[“files”].length;if(lenVin>1){alert(“请在启动之前压缩文件夹!”;返回false;}).on('fileuploadsubmit',函数(e,data){data.formData=data.context.find(':input').serializeArray();$('#divupload').load('listfiles.php');}.on('fileuploaddone',函数(e,data){alert(“文件上载成功”)})
是的,这就是我上面解释的。FF和Chrome处理它的方式不同,不管出于什么原因。:)你只需要将lenVin
设置为json_obj_vin[“文件”]。长度然后测试它是否为>1
。你应该试试这个:如果(json_obj_vin[“文件”]。长度>1 | json_obj_vin.文件[0]。大小==0){(“请压缩您的文件夹blah blah”);…}
并删除linVin=…”
行。此外,最好将var
放在变量前面,以正确地确定变量的范围“嘿,维诺-我认为这是正确的,你错过了一个小细节,你应该考虑将它标记为接受。”:应该注意的是,不支持在你的Web应用程序中删除文件夹的一个原因是,谷歌浏览器55没有正确地设置<代码>文件。在文件夹中。它将文件类型设置为空字符串。
var jqXHR = null;
$('#fileupload').fileupload({
multipart: false,
add: function(e, data) {
if (data.originalFiles.length > 1 || data.files[0].size === 0) {
fileError(null, 'zip');
} else {
jqXHR = data.submit();
}
},
error: function(jqXHR, textStatus) {
self.fileError(jqXHR, textStatus);
}
});
var fileError = function(jqXHR, textStatus) {
var statusCode = jqXHR ? jqXHR.status : 0;
// Figure out something nice to say, then close modal and clear out input box.
var friendlyError = 'Your file failed to upload.';
if (textStatus === 'abort') {
friendlyError = 'Your file upload was aborted.';
} else if (textStatus === 'error') {
friendlyError = 'There was a server error that prevented your file from being uploaded.';
} else if (textStatus === 'zip') {
friendlyError = 'This file cannot be uploaded. Please zip the file and try again.';
}
// Your custom UI code here!
};