无法使用node.js和heroku将文件上传到文件夹

时间:2017-08-22 16:32:50

标签: node.js heroku multer

上传文件时遇到问题。我正在尝试使用Node.js将文件上传到文件夹,我的APP部署在heroku中。我在下面解释我的代码。

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 });
app.post('/api/users/save-card-file',upload.single('file'), function (req, res, next) { 
   var data={'filename':res.req.file.filename};
   res.send(data);
})

在这里,我尝试将文件上传到uploads文件夹,并且在localhost中运行时工作正常,但我将我的应用程序上传到heroku并且响应即将到来,但没有文件已上传到uploads文件夹。我在heroku上传文件后收到以下回复。

{
    "filename": "1503419364442-btechmarksheet.jpg"
}

uploads文件夹中没有文件。其工作文件位于localhost,但在heroku我遇到了此类问题。请帮我解决此问题。

1 个答案:

答案 0 :(得分:3)

来自https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

  

每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,其运行进程可以将文件系统用作临时暂存器,但是任何其他dyno中的进程都不会看到所写的文件,并且在dyno停止或重新启动时,所写的任何文件都将被丢弃。例如,每次因应用程序部署而更换dyno时都会发生这种情况,并且大约每天一次作为正常dyno管理的一部分。

Heroku的文件系统不能用作持久性文件系统。 Dyno在后续请求之间的一些空闲时间后重新启动,重新初始化文件系统,这就是即使上传成功,您也无法在以后找到该文件的原因。

相关问题