Javascript Heroku文件上传

Javascript Heroku文件上传,javascript,node.js,heroku,file-io,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: 'G

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

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')
  });
}
panelBody.append('Download csv')
函数下载CSV(数据){
var filename=data+“”“报告.csv”
var form=$(“”,{action:'/admin/download',方法:'GET'});
append($('',{name:'file_name',value:filename}));
表单提交();
返回false;
}
get('/download',helper.isSchoolAdmin,feedController.downloadcv);
下载CSV:功能(请求、回复){
var fileName=process.cwd()+'/reports/'+req.query.file_name;
res.download(文件名、函数(错误){
如果(!err)console.log('down')
});
}
文件本身被写入到另一个路由的前一个请求中的指定路径。 现在这在我的本地服务器上运行良好。我的问题是,一旦我将它部署到heroku上,会发生什么?我的文件上传和下载是否仍然有效,正如我所读到的,heroku使用一个只允许写入tmp目录的ephimeral文件系统

如果是这样的话,有人能告诉我如何准确地通过节点写入该目录吗?而且,由于上传和下载是独立请求的一部分,文件是否会在我下载之前被删除?谢谢。

Heroku的“临时文件系统”是由于应用程序的容器化。构建应用程序时,会将LXC容器发送到运行时并执行

这意味着在重新部署、应用程序重新启动和多个dyno时,写入文件系统的任何文件都不会被持久化。甚至在tmp文件夹中

您不应该将这些文件存储在磁盘上,而是存储在专用的文件存储平台上,如AmazonS3或Google云存储


请参见

上传和读取文件(如CSV)然后让系统删除是否可以?我不担心保存文件——只是获取内容并发布到api。谢谢。是的,没关系。只要您不希望文件在请求持续时间后仍在文件系统中。太棒了。谢谢你的回复。