Heroku文件上传

时间:2017-04-11 03:08:53

标签: javascript node.js heroku file-io

我有一个本地文件下载,它以下列方式触发。

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 个答案:

答案 0 :(得分:1)

Heroku&#34;短暂的文件系统&#34;是由于应用程序的容器化。构建应用程序时,会将LXC容器发送到运行时并执行。

这意味着在重新部署,app重启和多个dynos之后,文件系统上写入的任何文件都不会被保留。即使在tmp文件夹中。

您不应该将这些文件存储在磁盘上,而是存储在专用的文件存储平台上,例如Amazon S3或Google Cloud Storage。

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