使用React DropZone将CSV转换为JSON客户端

rac*_*mic 5 csv json dropzone.js reactjs

这可能吗?

React dropzone,我收到一个File对象,其File.preview属性的值为blob:url.即File {preview: "blob:http://localhost:8080/52b6bad4-58f4-4ths-a2f5-4ee258ba864a"

有没有办法在客户端将其转换为json?该文件不需要存储在数据库中(转换JSON将是).我试图使用csvtojson,但它无法使用文件系统,因为它使用节点来驱动它.理想情况下,如果可能,一旦用户上传它,就想在客户端中转换它.欢迎任何建议.

        <Dropzone
            name={field.name}
            onDrop={(acceptedFiles, rejectedFiles) => {
                acceptedFiles.forEach(file => {
                    console.log(file)
                    let tempFile = file.preview
                    csv()
                        .fromSteam(tempFile) // this errors with fs.exists not a function as its not running serverside

                        .on('end_parsed',(jsonArrObj)=>{
                            console.log(jsonArrObj)
                        })
                })
            }}
        >
Run Code Online (Sandbox Code Playgroud)

小智 11

是的,它可能与FileReadercsv:

import csv from 'csv';

// ...

const onDrop = onDrop = (e) => {
    const reader = new FileReader();
    reader.onload = () => {
        csv.parse(reader.result, (err, data) => {
            console.log(data);
        });
    };

    reader.readAsBinaryString(e[0]);
}

// ...

<Dropzone name={field.name} onDrop={onDrop} />
Run Code Online (Sandbox Code Playgroud)

FileReader API:https://developer.mozilla.org/en/docs/Web/API/FileReader
csv package:https://www.npmjs.com/package/csv