使用 postman 上传下载 minio 文件

22 天前
 iv8d

请问如何操作呢,

curl --location --request POST 'http://localhost:9000/ojbk' \
--header 'X-Amz-Content-Sha256: e3b2c44298fc1c249afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20250709T051914Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=h8UH7MNIu4aMDqEBpuIa/20250709/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=7cba8aa4064a9bb3b715cb829190648c2d9b2a66c75040bf386ea441b15ee8dc' \
--form 'file=@"/C:/TPL.png"'

上传一直提示

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>InvalidRequest</Code>
    <Message>Invalid Request (request has multiple authentication types, please use one)</Message>
    <Resource>/ojbk</Resource>
    <RequestId>18507DB32E7AC764</RequestId>
    <HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId>
</Error>

其中 ojbk 是桶名。

上传都没调通,下载也不会。

1520 次点击
所在节点    问与答
24 条回复
wchcastle
22 天前
你贴的是 curl ,不是 postman
putaozhenhaochi
22 天前
curl -X POST -H "Content-Type: multipart/form-data" -F "file=@/path/to/local/file"
iv8d
22 天前
@wchcastle 道理一样哈,不然得给你截图了。
iv8d
22 天前
@putaozhenhaochi 你这不行得,连地址都没有。
iv8d
22 天前
我这问题啥什么上不了首页呢
已经使用自带得 AWS 签名访问了,内容如题
putaozhenhaochi
22 天前
@iv8d 把饭喂你嘴里?
iv8d
22 天前
@putaozhenhaochi 瞧您这脾气,我在例子里写了 curl 了。难道没覆盖你得例子?
iv8d
22 天前
下载示例 ,这个是成功的
```
curl --location --request GET 'http://localhost:9000/ojbk/检验报告单 TPL.txt' \
--header 'X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20250709T061848Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=h8UH7MNIu4aMDqEBpuIa/20250709/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e5f3f1003a77c266ed2fe3e504e7a5f848ab639c1cae3fc31121b17a6ba25481'
iv8d
22 天前
相同 Auth 配置下,为什么上传不行,还需要哪些设置呢
ysy950803
22 天前
这个问题,AI 那边怎么说? minio 应该是符合 S3 标准的吧,要不看看 S3 的文档。
iv8d
22 天前
@ysy950803 AI 说让检查 authentication ,看 curl 内容,我确定只加了一种 auth 。在 postman 里仅选了一种,没有额外的 headers 。
rogerhesong
22 天前
minio 应该没有 Authorization 这个 header 吧,
curl --location --request POST 'https://xxx/' \
--form 'key="t5219278254158516480.png"' \
--form 'policy="xxxxx"' \
--form 'bucket="xxx"' \
--form 'x-amz-algorithm="AWS4-HMAC-SHA256"' \
--form 'x-amz-credential="xxxx/20240606/us-east-1/s3/aws4_request"' \
--form 'x-amz-date="20240606T022651Z"' \
--form 'x-amz-signature="xxxx"' \
--form 'success_action_status="200"' \
--form 'file=@"/path/to/file"'
iv8d
22 天前
我选了 postman 里的 auth 里的 aws ,生成出来的就是 uthorization: AWS4-HMA 形式的。下载没问题,就上传不行。
iv8d
22 天前
@rogerhesong 大佬你这个示例在哪看的,官网有相关的描述吗,policy 是 readwrite 吗。
iv8d
22 天前
@rogerhesong 刚用你发的这个示例,将内容都放到 form-data 里的试过也不行提示
```
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>MalformedXML</Code>
<Message>The XML you provided was not well-formed or did not validate against our published schema.</Message>
<BucketName>ojbk</BucketName>
<Resource>/ojbk</Resource>
<RequestId>185082A263EF3990</RequestId>
<HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId>
</Error>
iv8d
22 天前
成功了,默认创建的 user 的 access-key 仅有查看权限,增加了 s3:PutObject 上传权限就可以了
iv8d
22 天前
使用 put 单文件方式,不用 form-data ,否则会提示 multiple authentication types
onesixthree
22 天前
直接生成预授权链接,然后通过预授权链接直接 put 文件
iv8d
22 天前
@onesixthree 在哪生成,预授权需要签名什么的。我这想不用 sdk 访问试试
rogerhesong
22 天前
@iv8d 我这是 sdk 生成的预签名参数,然后前端组装发起请求,不过我这是比较老版本私有化部署的,不一定适用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1143973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX