Я пытаюсь временно сохранить некоторые данные формы в хранилище сеанса и не могу найти способ надлежащим образом хранить поставленные в очередь (не загруженные) файлы dropzone.js.
Согласно документации , Я уже пробовал следующее:
сохранение:
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
.
Есть ли лучший способ?