elixir - 如何在谷歌存储中创建文件夹?灵药
问题描述
这是有效的,但只有文件是在根目录而不是文件夹中创建的
{:ok, object} = GoogleApi.Storage.V1.Api.Objects.storage_objects_insert_simple(
conn,
bucket_id,
"multipart",
%{name: Path.basename(file_path)},
file_path
)
解决方案
该name
参数应该是完整的文件夹加上要存储在您的存储桶中的文件名;您只发送basename(file_path)
,这是上传的文件名。
一些提示:
- 我说“文件夹”,即使 Goolge 存储显示存储的对象就像它们在文件夹中一样,它实际上只是一个键值对象存储
- 你的代码应该设置文件的完整路径 - 不要让用户输入设置它
- 注意 API 如何期望参数编码,通常由这个库为您处理
- 不幸的是,在 v0.23 中引入了一个错误(并且至少存在于 v0.26),它们没有正确编码最终路径参数
- 您需要
mime_type
在上传时发送正确的对象元数据,或者从浏览器下载它会导致它仅作为二进制文件发送
推荐阅读
- spring - 具有安全性的 Spring Boot Starter - Okta oauth2 的问题
- tensorflow - TensorFlow中如何清除整个网络结构
- javascript - npm Custom Package bin 脚本作为 Windows JScript 文件运行?
- domain-driven-design - 将 UnitOfWork 与 DDD 原则一起使用有什么意义?
- haskell - Haskell 超类型和子类型
- django - django 产品删除
- pyspark - Pyspark:是否有必要为 ml 算法使用“StringIndexer”创建“标签”列?为什么不能直接使用特征列?
- javascript - React - 在上下文中更改状态而不是重新渲染 DOM
- python - 使用烧瓶 python 集成平台数字人类 uneeq 来自 webhook 的 Dialogflow 响应
- c - 从 git 中提取时,如何在 CLions 上使用 C 启用代码洞察力?