在会话存储中保留 dropzone 文件
Persist dropzone files in Session storage
我试图在会话存储中临时保留一些表单数据,但找不到正确存储排队(未上传)dropzone.js 文件的方法。
Accoring to documentation,我已经尝试过以下方法:
存储:
dropzone.getQueuedFiles().forEach(function(file, index) {
sessionStorage.setItem("picture_" + index, file.dataURL);
sessionStorage.setItem("picture_" + index + "_name", file.name);
sessionStorage.setItem("picture_" + index + "_type", file.type);
})
在 DOM 呈现后检索:
let restoredFiles = 0;
for(let i =0; i < dropzone.options.maxFiles; i++) {
restoredFiles++;
if(sessionStorage.getItem('picture_' + i) !== null){
let data_url = sessionStorage.getItem('picture_' + i);
let name = sessionStorage.getItem('picture_' + i + '_name');
let type = sessionStorage.getItem('picture_' + i + '_type');
let mockFile = {dataURL: data_url, name: name, type: type};
dropzone.emit("addedfile", mockFile);
dropzone.emit("thumbnail", mockFile);
dropzone.createThumbnailFromUrl(mockFile);
dropzone.emit("complete", mockFile);
}
}
dropzone.options.maxFiles = dropzone.options.maxFiles - restoredFiles;
将文件添加到 Dropzone 效果很好,但无法显示缩略图。这两个缩略图命令中的任何一个都不会真正生成缩略图,并且没有实际的 URL,我无法真正使用 dropzone.createThumbnailFromUrl
。
有没有更好的方法?
费了好大劲,最后我是这样解决的:
存储:
var images = [];
dropzone.getQueuedFiles().forEach(function (file) {
let image = {
dataURL: file.dataURL,
name: file.name,
type: file.type,
size: file.size,
};
images.push(image);
});
sessionStorage.setItem("images", JSON.stringify(pictures));
正在检索:
var images = JSON.parse(sessionStorage.getItem('images'));
images.forEach(function(image) {
dropzone.files.push(image);
dropzone.emit("addedfile", image);
dropzone.emit("thumbnail", image, image.dataURL);
dropzone.emit("complete", image);
});
dropzone.options.maxFiles = dropzone.options.maxFiles - images.length;
我试图在会话存储中临时保留一些表单数据,但找不到正确存储排队(未上传)dropzone.js 文件的方法。
Accoring to documentation,我已经尝试过以下方法:
存储:
dropzone.getQueuedFiles().forEach(function(file, index) {
sessionStorage.setItem("picture_" + index, file.dataURL);
sessionStorage.setItem("picture_" + index + "_name", file.name);
sessionStorage.setItem("picture_" + index + "_type", file.type);
})
在 DOM 呈现后检索:
let restoredFiles = 0;
for(let i =0; i < dropzone.options.maxFiles; i++) {
restoredFiles++;
if(sessionStorage.getItem('picture_' + i) !== null){
let data_url = sessionStorage.getItem('picture_' + i);
let name = sessionStorage.getItem('picture_' + i + '_name');
let type = sessionStorage.getItem('picture_' + i + '_type');
let mockFile = {dataURL: data_url, name: name, type: type};
dropzone.emit("addedfile", mockFile);
dropzone.emit("thumbnail", mockFile);
dropzone.createThumbnailFromUrl(mockFile);
dropzone.emit("complete", mockFile);
}
}
dropzone.options.maxFiles = dropzone.options.maxFiles - restoredFiles;
将文件添加到 Dropzone 效果很好,但无法显示缩略图。这两个缩略图命令中的任何一个都不会真正生成缩略图,并且没有实际的 URL,我无法真正使用 dropzone.createThumbnailFromUrl
。
有没有更好的方法?
费了好大劲,最后我是这样解决的:
存储:
var images = [];
dropzone.getQueuedFiles().forEach(function (file) {
let image = {
dataURL: file.dataURL,
name: file.name,
type: file.type,
size: file.size,
};
images.push(image);
});
sessionStorage.setItem("images", JSON.stringify(pictures));
正在检索:
var images = JSON.parse(sessionStorage.getItem('images'));
images.forEach(function(image) {
dropzone.files.push(image);
dropzone.emit("addedfile", image);
dropzone.emit("thumbnail", image, image.dataURL);
dropzone.emit("complete", image);
});
dropzone.options.maxFiles = dropzone.options.maxFiles - images.length;