使用 React DropZone 将 CSV 转换为 JSON 客户端
Convert CSV to JSON client side with React DropZone
从 React dropzone,我收到一个带有 File.preview 属性 的文件对象,其值为 blob:url。即 File {preview: "blob:http://localhost:8080/52b6bad4-58f4-4ths-a2f5-4ee258ba864a"
有没有办法在客户端将其转换为 json?该文件不需要存储在数据库中(convert 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
从 React dropzone,我收到一个带有 File.preview 属性 的文件对象,其值为 blob:url。即 File {preview: "blob:http://localhost:8080/52b6bad4-58f4-4ths-a2f5-4ee258ba864a"
有没有办法在客户端将其转换为 json?该文件不需要存储在数据库中(convert 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