文档

mc share upload

语法

mc share upload 命令生成一个临时预签名 URL,其中包含用于将对象上传到 MinIO 存储桶的集成访问凭据。临时 URL 在可配置的时间限制后过期。

应用程序可以使用该 URL 执行 PUT 以上传对象。

有关可共享对象 URL 的更多信息,请参阅 Amazon S3 文档中的 预签名 URL

以下命令为 myminio MinIO 部署上的 mydata 存储桶生成一个新的预签名上传 URL

mc share upload --recursive myminio/mydata

该命令具有以下语法

mc [GLOBALFLAGS] share upload         \
                 [--expire "string"]  \
                 [--recursive]        \
                 ALIAS
  • 方括号 [] 表示可选参数。

  • 共享同一行的参数是相互依赖的。

  • 使用管道 | 运算符分隔的参数是互斥的。

将示例复制到文本编辑器中,并在终端/shell 中运行命令之前根据需要进行修改。

参数

别名

必填 MinIO 部署的 别名 以及要为其生成上传 URL 的对象的完整路径。例如

mc share upload play/mybucket/object.txt

您可以在相同或不同的 MinIO 部署上指定多个对象。例如

mc share upload play/mybucket/object.txt play/mybucket/otherobject.txt

如果指定存储桶或存储桶前缀的路径,则**必须**同时指定--recursive 参数。例如

mc share upload --recursive play/mybucket/

mc share upload --recursive play/mybucket/myprefix/
--expire, E

可选 设置所有生成 URL 的过期时间限制。

指定格式为##h##m##s 的字符串。例如:12h34m56s 表示 URL 生成后 12 小时 34 分钟 56 秒过期。

默认为168h 或 168 小时(7 天)。

--recursive, r

可选 修改 CURL URL 以支持将对象上传到存储桶或存储桶前缀。如果任何ALIAS 指定了存储桶或存储桶前缀的路径,则需要此选项。修改后的 CURL 输出类似于以下内容

curl ... -F key=<NAME> -F file=@<FILE>

<FILE> 替换为要上传的文件的路径。

<NAME> 替换为上传后对象名称。这可能包括前缀

全局标志

此命令支持任何全局标志

示例

生成用于上传对象(s) 的 URL

使用mc share upload 生成支持POST 请求的 URL,用于将文件上传到 MinIO 部署上的特定对象位置。

mc share upload --expire DURATION ALIAS/PATH
  • ALIAS 替换为 MinIO 部署的别名

  • PATH 替换为 MinIO 部署上对象的路径。

  • DURATION 替换为 URL 过期前的持续时间。例如,要设置 30 天的过期时间,请指定30d

使用mc share upload 以及--recursive--expire 选项生成一个支持POST 请求的临时 URL,用于将文件上传到 MinIO 部署上的存储桶。

mc share upload --recursive --expire DURATION ALIAS/PATH
  • ALIAS 替换为 MinIO 部署的别名

  • PATH 替换为 MinIO 部署上存储桶或存储桶前缀的路径。

  • DURATION 替换为 URL 过期前的持续时间。例如,要设置 30 天的过期时间,请指定30d

该命令返回一个用于将对象上传到指定存储桶前缀的 CURL 命令。

  • 将返回的 CURL 命令中的<FILE> 字符串替换为要上传的文件的路径。

  • 将返回的 CURL 命令中的<NAME> 字符串替换为存储桶中对象的名称。这可能包括前缀

您可以使用 shell 脚本循环将文件系统目录的内容递归上传到与 S3 兼容的服务。

#!/bin/sh

for file in ~/Documents/photos/
do
   curl https://play.min.io/mybucket/ \
   -F policy=AAAAA -F x-amz-algorithm=AWS4-HMAC-SHA256 \
   -F x-amz-credential=AAAA/us-east-1/s3/aws4_request \
   -F x-amz-date=20200812T202556Z \
   -F x-amz-signature=AAAA \
   -F bucket=mybucket -F key=photos/${file} -F file=@${file}

done

此示例会将目录~/Documents/photos/ 中的每个文件上传到mybucket 存储桶下的photos 前缀。请参考您首选脚本语言的文档中关于迭代目录中文件的最佳实践。

行为

S3 兼容性

mc 命令行工具构建时考虑了与 AWS S3 API 的兼容性,并在 MinIO 和 AWS S3 上进行了测试,以确保预期的功能和行为。

对于其他与 S3 兼容的服务,MinIO 不提供任何保证,因为它们的 S3 API 实现未知,因此不受支持。虽然mc 命令可能按文档说明工作,但任何此类用法均由您自行承担风险。