2017-08-26 73 views
0

我在node.js中使用multer將文件(來自基於Angular的客戶端項目)上傳到我的Heroku服務器。一切工作正常,但當Heroku服務器重新啓動或關閉時,所有上傳的文件消失,URL hits返回'Not Found'。當heroku服務器重新啓動時,使用multer上傳的文件消失

這是我上傳文件代碼:

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; 

告訴我我在丟失或我在做什麼錯。

+0

請閱讀[在什麼情況下,我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](/ meta.stackoverflow.com/q/326569) - 摘要是,這不是解決志願者問題的理想方式,而且可能對獲得答案起反作用。請不要將這添加到您的問題。 – halfer

+0

謝謝,下次我會記住:) –

回答

0

答案在你的問題,這是heroku。應用程序重新啓動後,只有部署的文件將保留在服務器上。

我建議使用遠程存儲,我推薦'cloudinary'作爲媒體存儲的免費解決方案。

但是,如果你想堅持使用heroku作爲存儲,總是有升級選項。

+0

非常感謝,你們的這個建議對我會很有幫助。 –

相關問題