Reactjs - 无法对来自 react-dropzone 的文件进行 base64 编码

Oma*_*lou 1 javascript base64 reactjs

react-dropzone用来处理我网站上的文件上传。成功加载文件后,dropzone 会触发以下回调:

onDrop: function (acceptedFiles, rejectedFiles) {
  myFile = acceptedFiles[0];
  console.log('Accepted files: ', myFile);
}
Run Code Online (Sandbox Code Playgroud)

我想对这个文件进行 base64 编码。做的时候:

var base64data = Base64.encode(myFile)
console.log("base64 data: ", base64data) // => base64 data: W29iamVjdCBGaWxlXQ==W29iamVjdCBGaWxlXQ==
Run Code Online (Sandbox Code Playgroud)

无论文件上传,它总是打印出相同的字符串。

我错过了什么吗?我需要对这个文件进行 base64 编码(总是图像)

Dre*_*ter 5

这个 JS Bin 是一个将文件转换为 base64 的工作示例:http : //jsbin.com/piqiqecuxo/1/edit ? js,console, output。主要的补充似乎是使用 a 读取文件FileReader,其中FileReader.readAsDataURL()返回 base64 编码的字符串

document.getElementById('button').addEventListener('click', function() {
  var files = document.getElementById('file').files;
  if (files.length > 0) {
    getBase64(files[0]);
  }
});

function getBase64(file) {
   var reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
     console.log(reader.result);
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}
Run Code Online (Sandbox Code Playgroud)