2017-04-11 12 views
0

ローカルファイルのダウンロードは、次のように行われます。Herokuファイルのアップロード

panelBody.append('<button onclick="downloadCsv(\''+skl+'\')">Download csv</button>') 

function downloadCsv(data){ 
    var filename=data+'_report.csv' 
    var form = $('<form>', {action: '/admin/download', method: 'GET'}); 
    form.append($('<input>', {name: 'file_name', value: filename})); 
    form.submit(); 
    return false; 
} 

router.get('/download',helper.isSchoolAdmin,feedController.downloadCsv); 

downloadCsv:function(req,res){ 
    var fileName = process.cwd()+'/reports/'+ req.query.file_name; 
    res.download(fileName,function(err){ 
    if(!err)console.log('down') 
    }); 
} 

ファイル自体は、別のルートへの直前の要求で指定されたパスに書き込まれます。 これはローカルでうまくいきます。私はherokuに展開したらどうなりますか?私はherokuがtmpディレクトリにのみ書き込むことができるephimeralファイルシステムを使用していることを読んだので、私のファイルのアップロードとダウンロードは動作しますか?

もしそうならば、誰かがノード経由でそのディレクトリに書き込む方法を正確に伝えることができますか...また、アップロードとダウンロードが一部であるため、ファイルをダウンロードする前にファイルが削除されてしまいます別のリクエストのありがとう。

答えて

1

Herokuの「ephemeral filestystem」は、アプリケーションのコンテナ化によるものです。アプリケーションがビルドされると、LXCコンテナがランタイムに送信され、実行されます。

つまり、ファイルシステムに書き込まれたファイルは、再デプロイ、アプリの再起動、および複数のdynosに対して永続化されません。 tmpフォルダ内であっても。

これらのファイルは、ディスクに保存するのではなく、Amazon S3やGoogle Cloud Storageなどの専用ファイルストレージプラットフォームに保存してください。

https://devcenter.heroku.com/articles/s3-upload-node

+0

それはファイルをアップロードして読むためにOKですが、(例えばCSV)を参照して、システムがそれを削除しますか?私はファイルを保存することを心配していません - ちょうど内容を取ってapiにPOSTをするだけです。ありがとうございました。 – joshlsullivan

+1

はい、問題ありません。リクエストの期間が経過してもファイルがファイルシステムに存在するとは限りません。 –

+0

回答いただきありがとうございます。 – joshlsullivan

関連する問題