来自React dropzone ,我收到一个带有 File.preview 属性的 File 对象,其值为 blob:url。即 文件 {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) 
                        }) 
                }) 
            }} 
        > 

请您参考如下方法:

是的,可以使用FileReader和csv:

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} /> 

文件读取器 API:https://developer.mozilla.org/en/docs/Web/API/FileReader
csv包:https://www.npmjs.com/package/csv


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!