在ExpressJS中向文件路径添加参数

时间:2016-06-20 17:12:50

标签: javascript node.js express

我正在尝试上传特定照片,引用我公共/资产目录中的客户端文件夹。文件路径应为public / assets /:id。但是,从我的代码中,当它运行时,文件路径总是以public / assets / undefined的形式返回。有没有人有关于如何解决这个问题的建议?这是快递中的代码。

app.param('id', function (req, res, next, id) {
 console.log(req.params.id);
  next();
  });
app.post('/file-upload', function(req, res) {
  // get the temporary location of the file
 var tmp_path = req.files.thumbnail.path;
  // set where the file should actually exists - in this case it is in the "images" directory
 var target_path = './public/assets/'+req.params.id;
  // move the file from the temporary location to the intended location
 fs.rename(tmp_path, target_path, function(err) {
    if (err) throw err;
    // delete the temporary file, so that the explicitly set temporary upload dir does not get filled with unwanted files
    fs.unlink(tmp_path, function() {
        if (err) throw err;
        res.send('File uploaded to: ' + target_path + ' - ' + req.files.thumbnail.size + ' bytes');
     });
  });
});

2 个答案:

答案 0 :(得分:1)

在路由中,您没有传递参数,请检查并更改您的路线逻辑

app.post('/file-upload/:id', function(req, res) {

 var target_path = './public/assets/'+req.params.id; //or use req.param('id')

  ................

});

发布链接传递您的第二段是您的ID 例如:http://localhost:port/file-upload/123

如果您遇到问题,请使用'?'使用传递变量作为查询字符串运营商

  app.post('/file-upload', function(req, res) {

     var target_path = './public/assets/'+req.query.id; 

      ................

    });

发布链接就像这样 例如:http://localhost:port/file-upload?id=123

答案 1 :(得分:0)

您可以在:id的第一个参数中使用.post,如:

app.post('/file-upload/:id', function(req, res) {

然后使用req.params.id在代码中进行检索。

在HTML中,您应根据要传递的action更改id路径。