【问题标题】:How to get the file and upload it using Node.js and Postman如何使用 Node.js 和 Postman 获取文件并上传
【发布时间】:2018-01-27 23:24:53
【问题描述】:

我需要一个帮助。我正在使用 Postman 发送文件,我需要使用 Node.js 将其上传到所需的文件夹中。我在下面解释我的代码。

server.js:

var express=require('express');
var morgan = require('morgan');
var http=require('http');
var bodyParser= require('body-parser');
var methodOverride = require('method-override');
var mongo = require('mongojs');
var session = require('express-session');
var app=module.exports=express();
var server=http.Server(app);
var port=8889;
var api=require('./api/api.js');
app.use(express.static(__dirname + '/public'));     // set the static files location /public/img will be /img for users
app.use(morgan('dev'));                     // log every request to the console
app.use(bodyParser.urlencoded({ extended: false,limit: '5mb' }))    // parse application/x-www-form-urlencoded
app.use(bodyParser.json({limit: '5mb'}))    // parse application/json
app.use(methodOverride());    
app.post('/upload',api.upload);    
server.listen(port);
console.log("Server is running on the port"+port);

api.js:

var multer  = require('multer');
var storage =multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './../uploads');
  },
  filename: function (req, file, callback) {
    callback(null, Date.now()+'-'+file.originalname);
  }
});
var upload = multer({ storage: storage});
exports.upload=function(req,res){
}

实际上,我使用postman 发布文件,其屏幕截图如下。

这里我的要求是将文件上传到所需的文件夹i.e-uploads 并且上传的文件名将作为对用户的响应返回。请帮帮我。

【问题讨论】:

  • 你在server.js的最后一行添加了app.listen(port)吗?
  • 是的,让我编辑一下
  • @Mr.D :我已经更新了我的帖子。你有什么解决办法吗?
  • 尝试将var server = http.Server(app) 放在app 声明之后,就在server.listen(port) 之前。
  • 已经有了。请检查一下,这不是我的问题。

标签: node.js postman multer


【解决方案1】:

您实际上并没有在这里使用 multer。您已经使用 multer 创建了上传,但您没有使用它。

试试下面的代码:

app.post('/upload', upload.single('file'), function (req, res, next) { 
     // req.file is the `file` file
     // req.body will hold the text fields, if there were any
})

其中 upload 将是 var upload = multer({ storage: storage});变量。

【讨论】:

  • 如何返回上传的文件名作为响应?
  • 上传文件的所有详细信息都将在 req.file 中提供。
  • 我确实喜欢这个app.post('/upload',upload.single('file'), function (req, res, next) { var data={'filename':res.req.file.filename}; res.send(data); }),但它没有发送任何响应。
  • 这里有错字。 var data={'filename':res.req.file.filename}; 应该是 var data={'filename': req.file.filename};。并且还要确保在发送数据时使用return。喜欢:return res.send(data);.
猜你喜欢
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 2021-01-10
  • 2021-05-08
  • 2017-11-17
  • 2023-03-16
相关资源
最近更新 更多