请问如何操作呢,
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 92 天前 你贴的是 curl ,不是 postman |
![]() | 2 putaozhenhaochi 92 天前 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 92 天前 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 92 天前 这个问题,AI 那边怎么说? minio 应该是符合 S3 标准的吧,要不看看 S3 的文档。 |
![]() | 11 iv8d OP @ysy950803 AI 说让检查 authentication ,看 curl 内容,我确定只加了一种 auth 。在 postman 里仅选了一种,没有额外的 headers 。 |
12 rogerhesong 92 天前 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 92 天前 直接生成预授权链接,然后通过预授权链接直接 put 文件 |
![]() | 19 iv8d OP @onesixthree 在哪生成,预授权需要签名什么的。我这想不用 sdk 访问试试 |
20 rogerhesong 92 天前 @iv8d 我这是 sdk 生成的预签名参数,然后前端组装发起请求,不过我这是比较老版本私有化部署的,不一定适用 |
21 zihuyishi 92 天前 简单,你用 aws s3 sdk ,然后配置里配置打印请求的信息,然后他会把 url 和 headers ,body 这些都打印出来,你直接照抄就行。 |
24 onesixthree 91 天前 |