我使用blueimp jQuery-File-Upload上传文件(https://github.com/blueimp/jQuery-File-Upload/)。我希望阻止用户将文件夹拖到Google Chrome(或任何其他brwosers)的放置区域。我已经尝试了多个和多个目录webkitdirectory mozdirectory选项。我不希望用户在任何浏览器中删除文件夹(包括chrome)。
我们可以选择阻止文件夹吗?或者我们可以选择在文件夹出现丢弃区域之前将其压缩吗?或者是否可以显示警告消息,指示用户必须将文件夹转换为zip / rar并拖动?
答案 0 :(得分:2)
所以,我有同样的问题。在Chrome上检测它的方法是查找data.originalFiles.length > 1
,在Firefox上要查找data.files[0].size === 0
。
我尝试设置minFileSize: 1
,maxNumberOfFiles: 1
的选项(并设置getNumberOfFiles
!),singleFileUploads: false
和limitMultiFileUploads: 1
...但是它们似乎都不能很好地工作,文档有点模糊,代码有点复杂。
他们有一个验证选项(https://github.com/blueimp/jQuery-File-Upload/wiki/Options#processqueue),但该示例在jQuery中使用了已弃用的$.Deferred
方法。
所以,我最终做了这样的事情(我删除了所有自定义内容和附加内容,使其更简单/更直接):
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!
};
基本上,如果它有多个文件或文件大小为0,则触发错误代码而不是提交jqXHR
数据。然后,覆盖fileupload
中的错误处理,也使用此错误处理程序,因为DRY。
答案 1 :(得分:0)
我找不到选项,但它更改了jquery.fileupload.js中的代码
yourTableView.keyboardDismissMode = .Interactive