使用multer,MEAN堆栈时文件没有被保存

时间:2016-09-12 18:27:30

标签: javascript node.js multer

我正在构建一个节点应用程序,它可以保存使用FormData()发送的文件。我正在使用multer模块。在FormData中,我使用XPCOM组件FileUtils发送文件。

我的客户端代码

    var file = FileUtils.getFile("AChrom", [att.name]);
    form.append("file", file);
    xhr.send(form); // Object of XMLHTTPRequest

这是我的request.headers

{ host: 'localhost:3000',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'accept-language': 'en-US,en;q=0.5',
  'accept-encoding': 'gzip, deflate',
  'content-length': '1111',
  'content-type': 'multipart/form-data; boundary=---------------------------12849261213577024421216708977',
  connection: 'keep-alive' }

这是我的要求。

  { messageId:    'xyz@yahoo.com',
  subject: 'Testing pdf',
  date: '1473703752000000',
  author: 'xyz',
  mBody: 'welcome to the world of dreamers',
  file: '[xpconnect wrapped nsIFile]',
  fileName: 'Boot Camp.pdf' }

我在服务器上的代码

var multer = require('multer');
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '.')
  },
  filename: function (req, file, cb) {
    cb(null, req.body.fileName)
  }
});

var upload = multer({storage: storage});

app.post('/', upload.single('file'),  function(req, res) {
  console.log(req.body);
  res.end("thank you");
})

我在SO click here上发现了类似的帖子但是我无法弄清楚我的代码有什么问题。

1 个答案:

答案 0 :(得分:0)

已在客户端代码中编辑

// var file = FileUtils.getFile("AChrom", [att.name]); // this just returns an file object not the actual file

var attachmentFile = new File(path)
form.append("file", file);
xhr.send(form);