没有通过邮递工具上传文件的节点

时间:2018-02-02 08:13:42

标签: javascript node.js file-upload multer

我只想使用multer在nodejs中上传文件。我正在使用邮递员检查文件是否正在上传。每次当我试图通过邮递员上传文件时,它显示我的错误。以下是我到目前为止所做的代码。

我的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看起来像这样

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 });
  }
 });

这是邮递员的截图

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

var express   =   require('express');

var route = express.Router();

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

module.exports = route;

现在在index.js文件/ app.js文件中包含这个index.route.js,保存你保留的名称。

不要忘记安装所有依赖项。

上传图片时,请参阅.single()中给出的名称,在我的情况下,我已经写了头像。

请参阅附件如何浏览文件以及在标题中设置的内容。

body when uploading image

header when uploading image

相关问题