google-cloud-storage - 有没有办法将谷歌存储签名的 url 更改为不包含文件名?
问题描述
我有一个方法可以获取谷歌存储桶中 blob 的签名 url,然后将其返回给用户。理想情况下,我也可以更改显示的文件的名称。这可能吗?
一个例子是:
https://storage.googleapis.com/<bucket>/<path to file.mp4>?Expires=1580050133&GoogleAccessId=<access-id>&Signature=<signature>
我想给自己设定的部分是<path to file.mp4>
。
解决方案
我能想到的唯一方法是在中间有一些东西来负责“交换”这个名字。
例如,带有 http 触发器的 Google App Engine 或带有存储触发器的 Cloud Function,只要您需要它就会获取对象、重命名它,然后直接将其提供给用户,或者将其以新名称存储在另一个存储桶中。
请记住,您要临时存储在 GAE 或 Cloud Functions 中的内容需要存储在“/tmp”目录中。
然后对于重命名,如果您使用的是 GAE,您可以使用以下内容:
导入操作系统 os.system([YOUR_SHELL_COMMAND])
然而,最简单但成本更高的方法是设置一个带有存储触发器的函数,每当上传一个对象时,它都会将它的副本以所需的新名称存储在您将为用户使用的不同存储桶中。
推荐阅读
- javascript - 如何在轮播中显示上一张和下一张幻灯片?
- sql - 将 REGEXP_REPLACE 替换转换为日期
- python - 如何在 python 中使用 re 替换两个或多个重复的 :punct:?
- konvajs - 在 Konva 层内绘制矩形,由均匀分布的区域限定
- java - Java 标准 API 中的类如何与操作系统交互?
- javascript - React js - 无法正确设置变量的状态
- assembly - 在Assembly 8086中反转字符串的“最简单”方法是什么
- sql - 如何获取表中所有列的重复值计数
- excel - 您可以创建 Excel 超链接到单元格中的特定值/单词吗?
- elixir - 运行发行版的二进制文件时找不到 JSON 文件,但使用 `iex -S mix phx.server` 运行时可以找到它