Dropzone 的文档在某些方面有些欠缺。一年多前我解决了这个问题,但我记得有类似的问题。这是我在一个页面上进行的初始化,它基本上可以完成您想要做的事情。
var previewNode = document.querySelector("#preview-template");
previewNode.id = "";
var previewTemplate = previewNode.parentNode.innerHTML;
previewNode.parentNode.removeChild(previewNode);
var acceptedFilesList = ".flv, .mp4, .jpg, .jpeg, .gif, .png, .doc, .docx, .pdf, .xls, .xlsx, .ppt, .pptx, .txt";
myDropzone = new Dropzone(document.body, {
url: "[url to post to]",
clickable: "[id$=dropzone-clickable]", // Make dropdown menu item clickable for uploads
previewTemplate: previewTemplate, // Use the previewTemplate div from markup to generate html in the modal for each file added
autoQueue: false, // Make sure the files aren't queued until manually added
previewsContainer: "#previews", // Define the container to display the previews
paramName: "UploadImage", // The variable name of the uploaded file on submit
acceptedFiles: acceptedFilesList
});
previewTemplate 是一组标记,用于显示有关用户尝试上传的每个文件的信息。 Dropzone 的文档实际上很好地解释了 previewTemplate 以及如何自定义它。
然后我在“addedfile”上使用事件监听器来自定义预览行:
myDropzone.on("addedfile", function (file) {
/* added logic for setting up the preview row,
investigate the file object within this to see what you can do */
});
最后,我有一个按钮开始上传(在 dropzone 术语中,将所有已添加的文件排入队列):
$(".btn-start-all").on("click", function () {
var addedFiles = myDropzone.getFilesWithStatus(Dropzone.ADDED);
addedFiles.forEach(function (upload) {
myDropzone.enqueueFile(upload);
});
});
这是我所拥有的一种精简/裸露的版本,但希望它能成为您完成所需工作的一个很好的参考