【问题标题】:Files uploaded with multer disappears when the heroku server restarts当heroku服务器重新启动时,使用multer上传的文件消失了
【发布时间】:2017-08-28 13:29:30
【问题描述】:

我在node.js 中使用multer 将文件(来自基于Angular 的客户端项目)上传到我的Heroku 服务器。一切正常,但是当 Heroku 服务器重新启动或关闭时,所有上传的文件都会消失,URL hits 返回 'Not Found'。

这是我上传文件的代码:

var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var multer = require('multer');
var pool = require('./dbconnection');

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/app/public/images/postImages/')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now()+'.jpg')
  }
})

var upload = multer({ storage: storage })


router.post('/postImages', upload.single('image'), function(req, res) {

var userId              = req.body.userId;
var postTitle           = req.body.postTitle;
var postDesc            = req.body.postDesc;
var postLat             = req.body.postLat;
var postLng             = req.body.postLng;
var postMediaType       = req.body.postMediaType;
var postMediaFileName   = req.file.filename;
var postMediaFilePath   = req.file.destination;
var postMediaFileURL    = req.file.path;
postMediaFileURL        = postMediaFileURL.substring(postMediaFileURL.indexOf('images/'), postMediaFileURL.length);

var inserts = [postTitle, postDesc, postLat, postLng, postMediaType, postMediaFileName, postMediaFilePath, postMediaFileURL, userId];
var sql = "INSERT INTO posts (postTitle, postDesc, postLat, postLng, postMediaType, postMediaFileName, postMediaFilePath, postMediaFileURL, userId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
sql = mysql.format(sql, inserts);
console.log(sql);

pool.getConnection(function(err, connection) {
    connection.query(sql, function(error, results) {
        connection.release();
        res.json(results);
        if(error) throw error;
    });
});
});

module.exports = router;

告诉我我错过了什么或我做错了什么。

【问题讨论】:

标签: node.js heroku multer


【解决方案1】:

答案就在你的问题中,它是 heroku。应用程序重新启动后,只有部署的文件会保留在服务器上。

我建议使用远程存储,我推荐“cloudinary”作为媒体存储的免费解决方案。

但如果您想坚持使用 heroku 作为存储,则始终可以选择升级。

【讨论】:

  • 非常感谢,您的推荐对我很有帮助。
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多