multer和后期处理文件?

时间:2016-03-21 21:05:06

标签: node.js express multer

我在我的node.js应用程序中使用multer,虽然我试图看看我应该如何找到multer将文件放在post函数中的位置,以便我可以对其进行后期处理。什么是正确的方法?目前我有这个:

var express = require('express')
var app = express()
var multer  = require('multer')
var upload = multer()


var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
     callback(null, './public/uploads/');
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now());
  }
});

var cpUpload = upload.fields([{ name: 'myfile', maxCount: 1 }]);

app.post('/profile', cpUpload, function (req, res, next) {
   var destination, filename;
   storage.getDestination(req, req.files.myfile[0], function(param1, dest) { destination = dest; })
   storage.getFilename(req, req.files.myfile[0], function(param1, fn) { filename = fn; })
   var path = destination + '/' + filename;
})

我查看了req.files.myfile[0]条目,看看是否提供了目标路径,但情况似乎并非如此:

{ fieldname: 'myfile',
  originalname: 'mytextfile.txt',
  encoding: '7bit',
  mimetype: 'text/plain' }

我想确保我使用的任何方法都符合API的期望。

2 个答案:

答案 0 :(得分:0)

使用未指定字段名称的multer函数导致没有保存文件(在这种情况下,它仅保存非文件字段)。如果要接受文件字段,则必须传递字段的字符串名称。

答案 1 :(得分:0)

在res对象中提供上传的文件详细信息

router.post('/file_upload', upload.single('photo'), function (req, res) {

    console.log(req.file) 
    res.status(204).end()
});

enter image description here

参考: - http://wiki.workassis.com/nodejs-express-get-post-multipart-request-handling-example/