【问题标题】:Persist dropzone files in Session storage在会话存储中保留 dropzone 文件
【发布时间】:2019-04-02 09:47:06
【问题描述】:

我正在尝试在会话存储中临时保留一些表单数据,但找不到正确存储排队(未上传)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

有没有更好的办法?

【问题讨论】:

    标签: javascript angular typescript dropzone.js


    【解决方案1】:

    花了很长时间,但最后我是这样解决的:

    存储:

    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;
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2012-12-23
      • 2015-01-31
      • 2016-10-06
      • 2013-04-21
      • 1970-01-01
      • 2019-10-31
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多