2017-08-22 9 views
2

ファイルのアップロード中に問題が発生しました。私はNode.jsを使用してフォルダにファイルをアップロードしようとしています。私のAPPはherokuに配置されています。以下のコードを説明しています。node.jsと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 folder.Iにアップロード何のファイルはなっていないのです、私はlocalhostで実行中uploadsフォルダとその作業罰金にファイルをアップロードしようとしていますが、私はherokuに私のアプリをアップロードしていますし、そこにファイルをherokuにアップロードした後の応答は以下のとおりです。

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

uploadsフォルダ内にファイルはありません。その作業ファイルはlocalhostですが、herokuにあります。このタイプの問題が発生しました。この問題を解決するのを手伝ってください。 https://devcenter.heroku.com/articles/dynos#ephemeral-filesystemから

答えて

3

各ダイノは、最後に展開されたコードの新しいコピーして、独自のはかないファイルシステムを取得します。 dynoの生存期間中、実行中のプロセスはファイルシステムを一時的なスクラッチパッドとして使用できますが、書き込まれたファイルは他のdynoのプロセスには表示されず、書き込まれたファイルはdynoを停止または再起動した時点で破棄されます。たとえば、これは、アプリケーションの展開のためにdynoが交換され、通常のdyno管理の一部として1日に約1回交換されるたびに発生します。

Herokuのファイルシステムは永続的なファイルシステムとして使用できません。 Dynoは後続のリクエストの間に何らかのアイドルタイムの後に再起動し、ファイルシステムを再初期化します。これはアップロードが成功した場合でも後でファイルを見つけることができないためです。

+0

これはどのような解決方法ですか?手伝ってくれませんか。 – satya

+2

AWS S3のようなサードパーティーのサービスを使用してファイルを保存してください。ファイルが画像の場合、imgurとcloudnaryは良いサービスです。 – tbking

+0

イメージを保存しています。だから、英雄の中のフォルダにファイルを保存する方法はありませんか? – satya

関連する問題