代码之家  ›  专栏  ›  技术社区  ›  Jay Lane

用multer提取上传的csv数据

  •  0
  • Jay Lane  · 技术社区  · 9 年前

    我正在移植一个rails应用程序来使用MEEN堆栈(Mongo、Express、Ember、Node)

    我有一个函数,它获取上传的csv并从中提取数据,然后使用数据将SQL查询形式化为数据库。由于某些原因,我在使用multer访问上传的csv数据时遇到问题。

    我的路由器文件

    var quotes = require('../api/quote');
    var cors = require('cors');
    var sku = require('../api/tools/sku');
    var multer = require('multer');
    var upload = multer({ dest: 'uploads/' });
    var util = require("util");
    var fs = require("fs"); 
    
    var corsOptions = {
        origin: 'http://localhost:4200'
    }
    
    module.exports = function(router){
        router.route('/quotes').post(cors(corsOptions),function(req,res){
            console.log(req.body);
            quotes.addQuote(req,res);
        }).get(cors(corsOptions),function(req,res){
            quotes.getAllQuotes(req,res);
        });
        router.route('*').get(cors(corsOptions), function(req,res){
            res.sendFile('public/index.html',{root:'./'});
        });
        router.post('/tools/sku/reactivate',upload.single('csvdata'),function(req,res){
            console.log(req.files);
            console.log('handing request over to sku.reactivate');
            sku.reactivate(req,res);
        });
    };
    

    工具/sku/重新激活模板的我的把手文件

    <div class="col-md-8 col-md-offset-2 text-center">
      <h2 class="toolTitle">Reactivate SKUs</h2>
      <p class="lead">CSV Should Contain 1 Column (SKU) Only</p>
      {{file-upload enctype="multipart/form-data" type="file" url="/tools/sku/reactivate" class="center-block" accept="text/csv" name="csvdata"}}
    </div>
    

    我遇到错误:当我尝试将文件上载发布到/tools/sku/重新激活发布路径时出现意外字段。我不明白我的代码出了什么问题。

    1 回复  |  直到 9 年前
        1
  •  0
  •   Jay Lane    9 年前

    问题是使用文件上传ember插件。当我移除车把组件并硬编码一个表单(如下图所示)后,文件上传就成功了。

    <div class="col-md-8 col-md-offset-2 text-center">
      <h2 class="toolTitle">Reactivate SKUs</h2>
      <p class="lead">CSV Should Contain 1 Column (SKU) Only</p>
      <form action="/tools/sku/reactivate" method="POST" enctype="multipart/form-data">
        <input class="center-block" type="file" name="csvdata">
        <button type="submit" class="btn btn-md btn-danger">Submit</button>
      </form>
    </div>