上传文件时遇到问题。我正在尝试使用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
我遇到了此类问题。请帮我解决此问题。
答案 0 :(得分:3)
来自https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem:
每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,其运行进程可以将文件系统用作临时暂存器,但是任何其他dyno中的进程都不会看到所写的文件,并且在dyno停止或重新启动时,所写的任何文件都将被丢弃。例如,每次因应用程序部署而更换dyno时都会发生这种情况,并且大约每天一次作为正常dyno管理的一部分。
Heroku的文件系统不能用作持久性文件系统。 Dyno在后续请求之间的一些空闲时间后重新启动,重新初始化文件系统,这就是即使上传成功,您也无法在以后找到该文件的原因。