如何在 react-dropzone 中将图像转换为 base64?

Posted

技术标签:

【中文标题】如何在 react-dropzone 中将图像转换为 base64?【英文标题】:How to convert image to base64 in react-dropzone? 【发布时间】:2018-10-19 09:52:28 【问题描述】:

我正在尝试在我的应用程序上实现 react-dropzone,但我无法发布并且总是得到 Internal Server Error,并且错误:TypeError: argument should be a bytes-如对象或 ASCII 字符串,而不是 'list',以防数据发布必须使用 convert base64

这是我的 onDrop 函数

onDrop(uploadData) 
  this.setState(
    uploadData,
  );

onDropHandler(uploadData) 
  var uploadData = uploadData[0];
  const reader = new FileReader();
  reader.readAsDataURL(uploadData);
  reader.onload = event => 
    this.setState(
      uploadData: this.state.uploadData([ base64: event.target.result ]),
    );
  ;
  reader.readAsDataURL(uploadData);

这是我的渲染方法:

<div className="dropzone">
  <Dropzone
    onDrop=this.onDrop.bind(this)
    accept="image/jpeg, image/png, image/jpg"
    onDrop=uploadData => 
      this.setState( uploadData );
    
    maxSize=200000
    multiple=false
  >
    <p>Maksimal 2 MB (JPG/PNG)</p>
  </Dropzone>
  this.state.uploadData.map(f => (
    <span key=f.name>
      f.name - f.size bytes
    </span>
  ))
</div>

This is error pic after submit

and this is json pic after submit

【问题讨论】:

请在您的问题中以文本形式包含错误消息。包括完整的回溯。并且还包括整个 react 类,而不仅仅是一些方法。 this.state.uploadData 这里是什么?好像是一个函数?为什么你的州有一个功能? minimal reproducible example 【参考方案1】:

也许这很有用

    const handleDrop = React.useCallback((acceptedFiles) => 
      const file = acceptedFiles.find(f => f)
      let reader = new FileReader()

      reader.readAsDataURL(file)
      reader.onload = () => 
        console.log(
          src: file.preview,
          data: reader.result
        )
        setB64(reader.result)
       

     , []);

setB64 是一个 React useState 钩子

【讨论】:

以上是关于如何在 react-dropzone 中将图像转换为 base64?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MATLAB 中将彩色图像转换为灰度图像?

如何在 Python 中将 RGB 图像转换为灰度图像?

如何在 QtCreator 中将图像转换为矩阵形式?

如何在 Flutter 中将图像转换为文件?

如何在xamarin android中将位图图像转换为gif?

如何在硒 c# 中将 Blob 图像转换为位图图像