http - Google Cloud Storage 签名 URL——如何指定最大文件大小?

标签 http upload google-cloud-platform google-cloud-storage pre-signed-url

目标

我们希望用户能够将图片上传到 Google Cloud Storage。

问题

我们可以通过我们的服务器作为中间人间接实现这一点——首先,用户上传到我们的服务器,然后我们的特权服务器可以上传到 Cloud Storage。

但是,我们认为这不必要地慢,而是希望用户直接上传到 Cloud Storage。

建议的解决方案

为了实现直接上传,我们生成一个Signed URL在我们的服务器上。签名 URL 指定过期时间,并且只能与 HTTP PUT 动词一起使用。用户可以请求签名 URL,然后(仅在有限的时间内)将图像上传到签名 URL 指定的路径。

解决方案有问题

有什么方法可以强制执行最大文件上传大小吗?显然,我们希望避免用户在我们期望 <1MB 文件时尝试上传 20GB 文件。

这似乎是一个明显的漏洞,但我不知道如何在仍然使用 SignedURLs 的情况下解决它。

似乎有一种方法可以使用政策文档 (Stack Overflow answer) 来做到这一点,但这个问题现在已有 2 年多了。

最佳答案

对于今天查看答案的所有人,请注意 link

x-goog-content-length-range:0,25000

是将上传大小限制在 0 到 25000 字节 Cloud Storage 之间的方法。

X-Upload-Content-Length 将不起作用,您仍然可以上传更大的文件

关于http - Google Cloud Storage 签名 URL——如何指定最大文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812595/

相关文章:

c# - 带 HTTP 2.0 的 RestSharp

android - HTTPURLConnection - 400 错误请求

Linux:上传未完成的文件-进行文件大小检查(scp/rsync)

xcode - 如何在 Swift 中使用 Alamofire 上传带有参数的图像

postgresql - 在 Node JS 程序中的 Openshift $OPENSHIFT_DATA_DIR 上使用 postgresql 复制命令

c# - 如何取消ServiceStack异步请求?

asp.net - 如果我的网站是 HTTPS,是否每次调用数据或静态页面也必须是 HTTPS?

docker - 无法将 docker 镜像从 GCE 实例上的 Jenkins 推送到 google 容器注册表

google-cloud-platform - 下载带有问号的 GCS 存储桶 blob 到文件

google-cloud-platform - 防止Firestore规则中的重复条目不起作用