Я хочу использовать swagger для загрузки файла CSV, а затем обработать файл в моем приложении nodejs, просматривая каждую строку.Часть swagger довольно прямолинейна, но я не могу прочитать файл, чтобы иметь возможность обрабатывать данные.
Я использовал приведенный ниже базовый пример swagger, который отлично работает для обслуживания файла, но я не уверенкак обращаться с этим в бэкэнде.
paths:
/upload:
post:
summary: "Uploads a file."
operationId: "uploadPOST"
consumes:
- "multipart/form-data"
parameters:
- name: "upfile"
in: "formData"
description: "The file to upload."
required: false
type: "file"
responses:
201:
description: "An object with user details"
x-swagger-router-controller: "Default"
У меня тогда есть очень простая функция в бэкэнде:
const fs = require('fs');
const csv = require('csv-parser');
module.exports.uploadPOST = function uploadPOST (req, res, next) {
var fileValue = req.swagger.params['upfile'].value;
console.log(fileValue);
fs.createReadStream(fileValue)
.pipe(csv())
.on('data', function(data){
console.log(data);
})
.on('end',function(){
console.log("Done")
});
};
Когда я регистрирую файл, я получаю:
{ fieldname: 'upfile',
originalname: 'test.csv',
encoding: '7bit',
mimetype: 'application/octet-stream',
buffer:
<Buffer 63 6f 6c 75 6d 6e 5f 61 2c 63 6f 6c 75 6d 6e 5f 62 2c 63 6f 6c 75 6d 6e 5f 63 2c 63 6f 6c 75 6d 6e 5f 64 2c 63 6f 6c 75 6d 6e 5f 65 2c 63 6f 6c 75 6d ... >,
size: 251 }
Теперь, когда я пытаюсь прочитать поток из "req.swagger.params ['upfile']. Value", я получаю следующую ошибку:
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be one of type string, Buffer, or URL
Так что я подумал, что может тогдапередать значение буфера через: "req.swagger.params ['upfile']. value.buffer", но затем я получаю сообщение об ошибке:
Error: ENOENT: no such file or directory, open 'column_a,column_b,column_c,column_d,column_e,column_f
a1,b1,c1,d1,e1,f1
a2,b2,c2,d2,e2,f2
a3,b3,c3,d3,e3,f3
a4,b4,c4,d4,e4,f4
a5,b5,c5,d5,e5,f5
a6,b6,c6,d6,e6,f6
a7,b7,c7,d7,e7,f7
a8,b8,c8,d8,e8,f8
a9,b9,c9,d9,e9,f9
a10,b10,c10,d10,e10,f10
'
Как мне поступить при чтении файла, чтобы яможно обрабатывать и циклически перебирать данные?