请问如何操作呢,
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 是桶名。
上传都没调通,下载也不会。
1
wchcastle 21 天前
你贴的是 curl ,不是 postman
|
![]() |
2
putaozhenhaochi 21 天前
curl -X POST -H "Content-Type: multipart/form-data" -F "file=@/path/to/local/file"
|
![]() |
4
iv8d OP @putaozhenhaochi 你这不行得,连地址都没有。
|
![]() |
5
iv8d OP 我这问题啥什么上不了首页呢
已经使用自带得 AWS 签名访问了,内容如题 |
![]() |
6
putaozhenhaochi 21 天前 via Android
@iv8d 把饭喂你嘴里?
|
![]() |
7
iv8d OP @putaozhenhaochi 瞧您这脾气,我在例子里写了 curl 了。难道没覆盖你得例子?
|
![]() |
8
iv8d OP 下载示例 ,这个是成功的
``` 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' |
![]() |
9
iv8d OP 相同 Auth 配置下,为什么上传不行,还需要哪些设置呢
|
![]() |
10
ysy950803 21 天前
这个问题,AI 那边怎么说? minio 应该是符合 S3 标准的吧,要不看看 S3 的文档。
|
![]() |
11
iv8d OP @ysy950803 AI 说让检查 authentication ,看 curl 内容,我确定只加了一种 auth 。在 postman 里仅选了一种,没有额外的 headers 。
|
12
rogerhesong 21 天前
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"' |
![]() |
13
iv8d OP 我选了 postman 里的 auth 里的 aws ,生成出来的就是 uthorization: AWS4-HMA 形式的。下载没问题,就上传不行。
|
![]() |
14
iv8d OP @rogerhesong 大佬你这个示例在哪看的,官网有相关的描述吗,policy 是 readwrite 吗。
|
![]() |
15
iv8d OP @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> |
![]() |
16
iv8d OP 成功了,默认创建的 user 的 access-key 仅有查看权限,增加了 s3:PutObject 上传权限就可以了
|
![]() |
17
iv8d OP 使用 put 单文件方式,不用 form-data ,否则会提示 multiple authentication types
|
18
onesixthree 21 天前
直接生成预授权链接,然后通过预授权链接直接 put 文件
|
![]() |
19
iv8d OP @onesixthree 在哪生成,预授权需要签名什么的。我这想不用 sdk 访问试试
|
20
rogerhesong 21 天前
@iv8d 我这是 sdk 生成的预签名参数,然后前端组装发起请求,不过我这是比较老版本私有化部署的,不一定适用
|
21
zihuyishi 21 天前
简单,你用 aws s3 sdk ,然后配置里配置打印请求的信息,然后他会把 url 和 headers ,body 这些都打印出来,你直接照抄就行。
|
24
onesixthree 20 天前
|