【问题标题】:How to convert a String to actual file that was generated from FileReader.readAsDataURL()如何将字符串转换为从 FileReader.readAsDataURL() 生成的实际文件
【发布时间】:2019-11-29 20:31:37
【问题描述】:

我使用这个生成了一个文件字符串:

const reader = new window.FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
  var x = reader.result.toString();
  console.log("File String :: ", x);
};

如何将此字符串转换为实际文件,就像以前的文件是 PDF 一样,然后此字符串将转换为 pdf 文件

reader.result.toString() 给我一个类似 "data:application/pdf;base64,JVBERi0xLjQKJSDi48/..........."
的字符串br>我想将其转换回 pdf

FileReader.readAsDataURL()

【问题讨论】:

  • “实际文件”是什么意思?或者更重要的是,您要解决的问题是什么?
  • 我想将此字符串转换为主要文件格式。就像文件是 pdf 一样,然后将其转换回 pdf 文件
  • stackoverflow.com/questions/246801/… readAsDataURL 的 api 引用该方法的结果将是 base64 中文件的内容。所以看来你要问的是如何从base64转换回来。
  • 就像在将其转换为字符串后,它给了我这样的字符串:data:application/pdf;base64,JVBERi0xLjQKJSDi48/........... 我想将其转换回 pdf
  • 这不是重复的,而 marked question 处理编码/解码 base64 字符串它不回答 op 的如何从中获取文件对象的问题。

标签: javascript web filereader


【解决方案1】:

如果您有一个 base64 字符串,请使用 atob 对其进行解码,然后使用 Blob() 构造函数获取 Blob 对象(文件的超级构造函数)

//strip off the data uri prefix
let encodedString = dataUrlString.replace('data:application/pdf;base64,','')
let data = atob(encodedString);
let blob = new Blob([data],{'type':'optional mime type here'});

//if you need a literal File object
let file = new File(blob,"filename.pdf",{type:"optional mime type"});

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2018-06-08
    相关资源
    最近更新 更多