Пока у меня есть это:
app.get('/:image/:size.:ext', (req, res) => {
const remote = bucket.file(`${req.params.image}/${req.params.size}.${req.params.ext}`)
if (req.query.download == 'true') {
res.set('Content-Type', 'image/jpg')
res.set('Content-Disposition', `attachment; filename="${req.params.image}.${req.params.size}.${req.params.ext}";` )
res.set('Content-Transfer-Encoding', 'binary')
// header("Content-Length: ".filesize($filename))
}
// if (isProd)
// res.set('Cache-Control', 'public, max-age=604800')
remote.createReadStream({ validation: false })
.on('error', error => {
console.log(error)
res.send(`data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7`)
})
.pipe(res)
})
В этом блоке download=true
я не уверен, как получить размер файла, если он каким-то образом передается через поток remote
, или если яследует хранить это в базе данных где-то, иначе получить можно как-то.