首页 > 解决方案 > 如何在节点js中获取文件路径并传递给数据库请求

问题描述

我使用 Node.js express + PostgreSQL

如何在 BD 查询中通过 Node.js 将路径传递到我的 CSV 文件?

我有一个 html 表单,它有文件输入,比如 -

<form method="post" action="import_csv" target="_blank" enctype="multipart/form-data" >
<p><input type="file" name="csv_file">
<input type="submit" value="submit"></p>
</form>

之后,我将此发布请求重定向到控制器(服务器)的以下方法。

app.post("/import_csv_file",urlencodedParser,function(req,res) {

    var config = {
        user:'postgres',
        database:'mybd',
        password: '1',
        host:'localhost',
        port:5432,
        max:10,
        idleTimeoutMillis: 30000
    }
    var pool = new pg.Pool(config)
    pool.connect(function(err, client, done){
        console.log("teacher")
        if(err){
            return console.error('error')
        }
        file_path = req.body.csv_file
        console.log(file_path)


        client.query("select * from import_csv($1,$2)",[log2,req.body.csv_file], function(err, result) {
            done()
        req.session.user2 = result
        if (err){
            res.end()
            return console.error("error")
       }
        res.render('import_csv_file',{jour:result}})
      })
       })

我在这里得到的结果是 - undefined (console.log(req.body.csv_file))

如何将 CSV 文件的路径传递给数据库查询,以便一切正常

标签: htmlnode.jspostgresqlfileexpress

解决方案


谢谢大家的帮助 !

安装程序 multer 和 next

    const path = require('path')
    var multer = require('multer');
    const upload = multer({ dest: '/tmp/' });

    app.post("/import_csv_file",upload.any(),function(req,res) {

        var config = {
            user:'postgres',
            database:'mybd',
            password: '1',
            host:'localhost',
            port:5432,
            max:10,
            idleTimeoutMillis: 30000
        }
        var pool = new pg.Pool(config)
        pool.connect(function(err, client, done){
            console.log("teacher")
            if(err){
                return console.error('error')
            }
           console.log(req.body);
  console.log(req.files);

  const file = req.files[0];
 console.log(file)
 console.log(file.path)


            client.query("select * from import_csv($1,$2)",[log2,file.path], function(err, result) {
                done()
            req.session.user2 = result
            if (err){
                res.end()
                return console.error("error")
           }
            res.render('import_csv_file',{jour:result}})
          })
           })

和 html

<form method="post" action="inside_teacher_import_ocenka" target="_blank" enctype="multipart/form-data">
<p><input type="file" name="csv_ocenka">
<input type="submit" value="Отправить"></p>
</form>

推荐阅读