【发布时间】:2020-10-22 22:27:24
【问题描述】:
我有一个公共存储桶,用于托管公共用户内容。
我想让用户能够下载这些文件,方法是单击一个链接,该链接会打开 gcp 页面,该页面会自动开始下载。为此,需要设置 content-disposition 标头。
我还要设置下载文件的文件名。
有没有办法在 gcp 中处理这个问题?
我知道我可以生成一个签名的 url:Google Cloud Storage: download a file with a different name,并设置所需的标题,但我认为这不是正确的解决方案。据我了解,在访问受保护的资源时,应该使用签名的 url。有没有办法轻松获取下载链接?
我目前在自己的服务器上处理这个问题,但我想让 gcp 处理它。 这是一个云文件的演示网址:https://storage.googleapis.com/just-demo-bucket-14512/Big_Buck_Bunny_1080_10s_5MB.mp4
router.get('/download', (req, res) => {
res.setHeader("content-disposition", "attachment; filename=cool.mp4");
request('https://storage.googleapis.com/just-demo-bucket-14512/Big_Buck_Bunny_1080_10s_5MB.mp4').pipe(res);
})
【问题讨论】:
-
我不明白。你有一个公共的buket,为什么要使用singedURL?内容处置是正确的做法。您可以将其永久设置到 Cloud Storage 中,以防止将其添加到您的代码中。
-
我想即时设置 content-disposition 标头。通过 GET 参数设置它是完美的。
-
在
GET parameter中,您的意思是当您从存储中获取文件时,您想要https://storage.googleapis.com/path/to/file?content-disposition=...之类的内容,对吧? -
这个 GET 参数会很完美。
-
如果您想要静态内容配置,您可以使用 Cloud Storage 的标头。但是如果你想要一些动态的东西,你必须在它前面放一个服务器。
标签: node.js google-cloud-platform google-cloud-storage