最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

招摇处理后上传CSV文件

IT培训 admin 4浏览 0评论

招摇处理后上传CSV文件

我期待使用招摇上传CSV文件,然后在处理我的应用程序的NodeJS文件,通过每一行循环。昂首阔步的部分是相当简单的,但我无法读取该文件,以便能够处理数据。

我已经使用了基本招摇例如低于正常工作,以提供服务的文件,但我不知道该如何处理它在后端。

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’]值”读取流,我收到以下错误:

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
'

我怎么会去通读的数据文件,这样就可以处理和循环?

回答如下:

所以我想这个错误的方式。正如评论fs.createReadStream提到的()是特定于从文件中读取。作为招摇文件转换为一个对象,不同的方法需要使用。

这是通过该CSV节点模块来实现的。

npm install csv

并使用它像这样

const csv = require('csv')

module.exports.uploadPOST = function uploadPOST (req, res, next) { 

  csv.parse(req.swagger.params['upfile'].value.buffer, function (err, data) {
    console.log(data);
  });


};

这将反过来转换CSV成阵列的一个阵列

[ [ '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' ] ]

招摇处理后上传CSV文件

我期待使用招摇上传CSV文件,然后在处理我的应用程序的NodeJS文件,通过每一行循环。昂首阔步的部分是相当简单的,但我无法读取该文件,以便能够处理数据。

我已经使用了基本招摇例如低于正常工作,以提供服务的文件,但我不知道该如何处理它在后端。

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’]值”读取流,我收到以下错误:

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
'

我怎么会去通读的数据文件,这样就可以处理和循环?

回答如下:

所以我想这个错误的方式。正如评论fs.createReadStream提到的()是特定于从文件中读取。作为招摇文件转换为一个对象,不同的方法需要使用。

这是通过该CSV节点模块来实现的。

npm install csv

并使用它像这样

const csv = require('csv')

module.exports.uploadPOST = function uploadPOST (req, res, next) { 

  csv.parse(req.swagger.params['upfile'].value.buffer, function (err, data) {
    console.log(data);
  });


};

这将反过来转换CSV成阵列的一个阵列

[ [ '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' ] ]

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论