Kar*_*ik 5 javascript file-io heroku node.js
我有一个本地文件下载,它以以下方式触发。
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')
});
}
Run Code Online (Sandbox Code Playgroud)
文件本身会写入到不同路由的前一个请求中的指定路径。现在这在我的本地运行良好......我的问题是,一旦我将其部署到heroku 上会发生什么?我的文件上传和下载是否仍然有效,因为我读到 Heroku 使用临时文件系统,只允许写入 tmp 目录。
如果是这种情况,有人可以引导我了解如何通过节点准确写入该目录吗?而且,由于上传和下载是单独请求的一部分,因此文件最终会在我下载之前被删除吗?谢谢。
Heroku 的“临时文件系统”归因于应用程序的容器化。当您的应用程序构建时,LXC 容器将被发送到运行时并执行。
这意味着在文件系统上写入的任何文件都不会在重新部署、应用程序重新启动和多个动态测试中保留。即使在 tmp 文件夹中。
您不应将这些文件存储在磁盘上,而应存储在专用文件存储平台上,例如 Amazon S3 或 Google Cloud Storage。
请参阅https://devcenter.heroku.com/articles/s3-upload-node