简体   繁体   English

带有Multer的Node.js无法通过邮递员工具上传文件

[英]Nodejs with multer not uploading files through postman tool

I just want to upload file in nodejs using multer. 我只想使用multer在nodejs中上传文件。 I am using postman to check whether file is doing upload or not. 我正在使用邮递员检查文件是否正在上传。 Everytime when I am trying to upload file through postman its showing me error. 每当我尝试通过邮递员上传文件时,都会向我显示错误。 So below are the code what I have done so far. 所以下面是我到目前为止所做的代码。

my express.js file looks like this 我的express.js文件看起来像这样

/* ===================
   Import Node Modules
=================== */
const express = require('express');
const app = express();
const router = express.Router();

const mongoose = require('mongoose');
const config = require('./database');
const path  = require('path');
const appRoot  = require('app-root-path') ;

const event = require('./routes/event.router');
const multer = require('multer');

const bodyParser = require('body-parser');
const cors = require('cors');


const port = process.env.PORT || 8080; // Allows heroku to set port

mongoose.Promise = global.Promise;

process.env.NODE_ENV = 'devlopment';

// Database Connection
mongoose.connect(config.uri, {
  useMongoClient: true,
}, (err) => {
  // Check if database was able to connect
  if (err) {
    console.log('Could NOT connect to database: ', err); // Return error message
  } else {
    console.log('Connected to ' + config.db); // Return success message
  }
});


app.use(cors());

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use(express.static(path.join(appRoot.path, 'dist')));
app.use('/event', event);

// Serve only the static files form the dist directory
app.get('*', (req, res) => {
    res.sendFile(path.join(appRoot.path, 'dist/index.html'));
  });

// Start Server: Listen on port 8080
app.listen(port, () => {
  console.log('Listening on port ' + port + ' in ' + process.env.NODE_ENV + ' mode');
});

event.router.js looks like this event.router.js看起来像这样

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');

const Event = require('../../model/event.model');
var multer  = require('multer');
var upload  = multer({ dest: './public/uploads/img/',fileFilter:function(req,file,cb){
  var ext = file.originalname.split('.').pop();
  cb(null, file.fieldname + '-' + Date.now() + '.' + ext);
    }
}).single('eventimage');

[![router.post('/', function(req, res, next)  {
  upload(req, res, function(err) {
    console.log('file', req.file);
  });

  if( !req.file ) {
    res.json({ success : false, message: 'You must provide event image!' });
  }
  else {
    res.json({ success : true, message: req.file.eventimage });
  }
 });

Here is the screenshot for the postman 这是邮递员的屏幕截图

在此处输入图片说明

event.router.js event.router.js

var express = require('express');
var multer = require('multer');
var route = express.Router();

var storage = multer.diskStorage({
destination: function (req, file, cb) {
 cb(null, 'public/uploads/')
},

 filename: function (req, file, cb) {
 console.log(file);
 let extArray = file.mimetype.split("/");
let extension = extArray[extArray.length - 1];
// cb(null, file.fieldname + '-' + Date.now() + '.' + extension);
 cb(null, file.originalname + '-' + Date.now() + '.' + extension);
}
})

var upload = multer({ storage: storage }).single('avatar');

route.post('/', function (req, res) {
upload(req,res, function(err) {
if (err) {
  res.send('error uploading file');
 }
 res.json({
  success : true,
  message : 'File uploaded!',
  file : req.file
  });

  })
 });

 module.exports = route;

index.route.js index.route.js

var fileUpload = require('../routes/fileUpload');

var express   =   require('express');

var route = express.Router();

route.use('/upload', fileUpload);

module.exports = route;

Now include this index.route.js in your index.js file/app.js file what ever name you have kept. 现在,将这个index.route.js保留在您的index.js文件/app.js文件中。

Don't forget to install all dependencies. 不要忘记安装所有依赖项。

And when uploading image see the name given in .single(), in my case i have written avatar. 当上传图片时,请参阅.single()中给出的名称,在我的情况下,我已经写了头像。

See the attachments how to browse your file and what is to be set in headers. 请参阅附件如何浏览文件以及标题中要设置的内容。

上载图片时的主体

上传图片时的标题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM