Javascript dropzone.js - 选择上传文件的文件夹
Javascript dropzone.js - Choosing a Folder for file upload
我正在使用 dropzone.js 上传多个文件。
使用此功能,我可以 select 一个文件夹中的多个文件,并且在 select 处理多个文件时,我只会 select 我列表中的一组文件。
相反,我需要select一个文件夹(目录)
我可以拖放文件夹。单击 dz-clickable
时我应该执行的相同功能
我的Html代码
<div class="dropzone dz-clickable" id="myDrop">
<div class="dz-default dz-message" data-dz-message="">
<span>Upload or drag your files here</span>
</div>
</div>
我的Javascript代码
var myDropzone = new Dropzone("div#myDrop", {
addRemoveLinks: true,
autoProcessQueue: false,
parallelUploads: maxParallelCount,
url: "#",
transformFile: function transformFile(file, done) {
zip = new JSZip();
zip.file(file.name, file);
zip.generateAsync(
{
type:"blob",
compression: "DEFLATE"
}
).then(function(content) {
done(content);
});
},
init: function() {
this.on("addedfile", function(file) {
if (jQuery.inArray(file.name, addedfiles) > -1) {
myDropzone.removeFile(file);
}
if (jQuery.inArray(file.name, DOC_NAMES) == -1) {
myDropzone.removeFile(file);
}
else {
addedfiles.push(file.name);
queueCount += 1;
}
});
this.on("removedfile", function(file) {
console.log(file.name);
if (jQuery.inArray(file.name, addedfiles) > -1) {
// addedfiles.pop(file.name);
var indOfAddedFiles = addedfiles.indexOf(file.name);
console.log("indOfAddedFiles -> "+ indOfAddedFiles);
addedfiles.splice(indOfAddedFiles, 1);
queueCount -= 1;
}
})
}
如何选择目录并相应地执行我的过程?有什么想法吗?
我认为 Dropzone.js 不允许上传整个目录(或者他们的文档中没有指定)
让我回答我的问题
选择文件夹是通过在hiddenFileInput
中将属性webkitdirectory
设置为true
来实现的
连同 type
属性,添加
_this3.hiddenFileInput = document.createElement("input");
_this3.hiddenFileInput.setAttribute("type", "file");
_this3.hiddenFileInput.setAttribute("webkitdirectory", true);
只是为@Sri 的解决方案提供上下文
$("div#dropzoneDiv").dropzone({
url: '/upload',
init: function() {
this.hiddenFileInput.setAttribute("webkitdirectory", true);
}
});
我正在使用 dropzone.js 上传多个文件。 使用此功能,我可以 select 一个文件夹中的多个文件,并且在 select 处理多个文件时,我只会 select 我列表中的一组文件。
相反,我需要select一个文件夹(目录)
我可以拖放文件夹。单击 dz-clickable
时我应该执行的相同功能我的Html代码
<div class="dropzone dz-clickable" id="myDrop">
<div class="dz-default dz-message" data-dz-message="">
<span>Upload or drag your files here</span>
</div>
</div>
我的Javascript代码
var myDropzone = new Dropzone("div#myDrop", {
addRemoveLinks: true,
autoProcessQueue: false,
parallelUploads: maxParallelCount,
url: "#",
transformFile: function transformFile(file, done) {
zip = new JSZip();
zip.file(file.name, file);
zip.generateAsync(
{
type:"blob",
compression: "DEFLATE"
}
).then(function(content) {
done(content);
});
},
init: function() {
this.on("addedfile", function(file) {
if (jQuery.inArray(file.name, addedfiles) > -1) {
myDropzone.removeFile(file);
}
if (jQuery.inArray(file.name, DOC_NAMES) == -1) {
myDropzone.removeFile(file);
}
else {
addedfiles.push(file.name);
queueCount += 1;
}
});
this.on("removedfile", function(file) {
console.log(file.name);
if (jQuery.inArray(file.name, addedfiles) > -1) {
// addedfiles.pop(file.name);
var indOfAddedFiles = addedfiles.indexOf(file.name);
console.log("indOfAddedFiles -> "+ indOfAddedFiles);
addedfiles.splice(indOfAddedFiles, 1);
queueCount -= 1;
}
})
}
如何选择目录并相应地执行我的过程?有什么想法吗?
我认为 Dropzone.js 不允许上传整个目录(或者他们的文档中没有指定)
让我回答我的问题
选择文件夹是通过在hiddenFileInput
webkitdirectory
设置为true
来实现的
连同 type
属性,添加
_this3.hiddenFileInput = document.createElement("input");
_this3.hiddenFileInput.setAttribute("type", "file");
_this3.hiddenFileInput.setAttribute("webkitdirectory", true);
只是为@Sri 的解决方案提供上下文
$("div#dropzoneDiv").dropzone({
url: '/upload',
init: function() {
this.hiddenFileInput.setAttribute("webkitdirectory", true);
}
});