Javascript 阻止jQuery文件上载中的文件夹上载

Javascript 阻止jQuery文件上载中的文件夹上载,javascript,jquery,file-upload,blueimp,Javascript,Jquery,File Upload,Blueimp,我正在使用blueimp jQuery文件上载来上载文件()。我希望防止用户将文件夹拖到Google Chrome(或任何其他浏览器)的拖放区域。我尝试了多目录和多目录webkitdirectory选项。我不希望用户在任何浏览器(包括chrome)中删除文件夹 我们是否有阻止文件夹的选项?或者我们可以选择在文件夹出现之前将其压缩到拖放区吗?或者是否有可能显示一条警告消息,指示用户必须将文件夹转换为zip/rar并拖动?因此,我遇到了同样的问题。在Chrome上检测它的方法是查找data.orig

我正在使用blueimp jQuery文件上载来上载文件()。我希望防止用户将文件夹拖到Google Chrome(或任何其他浏览器)的拖放区域。我尝试了多目录和多目录webkitdirectory选项。我不希望用户在任何浏览器(包括chrome)中删除文件夹


我们是否有阻止文件夹的选项?或者我们可以选择在文件夹出现之前将其压缩到拖放区吗?或者是否有可能显示一条警告消息,指示用户必须将文件夹转换为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!
};