javascript – 文件阅读器告诉我参数1不是blob?

我有一个文件输入,返回看起来像我的文件路径,但fileReader给我以下错误.

Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.

我觉得我在这里错过了一些东西.我哪里错了?

import React from 'react';

    export default class TestPage extends React.Component {
        constructor() {
            super();
            this.state = {
                file: ''
            }
        }

        onChange(e) {
            let reader = new FileReader();
            reader.onload = function(e) {
              this.setState({file: reader.result})
            }
            reader.readAsDataURL(e.target.value);
        }

        render() {
            return (
                <div>
                    <input onChange={this.onChange.bind(this)} type="file" name="file" />
                    <br />
                    <video width="400" controls>
                        <source src={this.state.file} type="video/mp4" />
                    </video>
                </div>
            )
        }
    }

解决方法:

答案很明显,它就在错误中. “参数1不是Blob类型” – 换句话说,readAsDataURL需要一个Blob,但这不是你传递的. readAsDataURL is specifically meant to read Files or Blobs, not file paths.同时,the FileReader.result parameter will end up being a String or ArrayBuffer.

您可能想要做的是pass in the input files array, not “e.target.value”,readAsDataURL.

onChange(e) {
            let reader = new FileReader();
            reader.onload = function(e) {
              this.setState({file: reader.result})
            }
            reader.readAsDataURL(e.target.files[0]);
        }
上一篇:Java练习2--读取txt文件统计考勤次数并写入一个txt文件中


下一篇:使用php 读取带有图像的Ms word文档