我正在使用Stradi构建api,并尝试添加导入/导出功能。 导出一完成。但是,由于我是js的新用户,因此不确定在导入过程中如何处理文件。
这是我从请求中获取文件的方式:
var file = ctx.request.files.file;
这是console.log(文件)的输出:
File {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
size: 127,
path: '/tmp/upload_3f202079094c364546a9d4a792a1d5f5',
name: 'declaracion.csv',
type: 'text/csv',
hash: null,
lastModifiedDate: 2020-10-30T11:37:37.093Z,
_writeStream: WriteStream {
_writableState: WritableState {
objectMode: false,
highWaterMark: 16384,
finalCalled: true,
needDrain: false,
ending: true,
ended: true,
finished: true,
destroyed: true,
decodeStrings: true,
defaultEncoding: 'utf8',
length: 0,
writing: false,
corked: 0,
sync: false,
bufferProcessing: false,
onwrite: [Function: bound onwrite],
writecb: null,
writelen: 0,
afterWriteTickInfo: null,
bufferedRequest: null,
lastBufferedRequest: null,
pendingcb: 0,
prefinished: true,
errorEmitted: false,
emitClose: false,
autoDestroy: false,
bufferedRequestCount: 0,
corkedRequestsFree: [Object]
},
writable: false,
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
path: '/tmp/upload_3f202079094c364546a9d4a792a1d5f5',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
autoClose: true,
pos: undefined,
bytesWritten: 127,
closed: true,
[Symbol(kCapture)]: false,
[Symbol(kIsPerformingIO)]: false
},
[Symbol(kCapture)]: false
}
是否有将文件转换为数组或对象的想法?
答案 0 :(得分:1)
您可以使用csv-parser完成此操作,他们的文档具有足够的描述性,但是我会在stradi的背景下写下来。
const fs = require('fs');
const csv = require('csv-parser');
function parseCsv(filePath) {
const results = [];
return new Promise(resolve => {
fs.createReadStream(filePath)
.pipe(csv())
.on('data', data => results.push(data))
.on('end', () => {
resolve(results);
});
});
}
module.exports = parseCsv;
const parseCsv = require('.pathToExportedFunction/parseCsv');
const myCsv = await parseCsv('filePath.csv');
console.log(myCsv);