V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iv8d
V2EX  ›  问与答

使用 postman 上传下载 minio 文件

  •  
  •   iv8d · 21 天前 · 1511 次点击

    请问如何操作呢,

    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 是桶名。

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

    24 条回复    2025-07-10 15:03:06 +08:00
    wchcastle
        1
    wchcastle  
       21 天前
    你贴的是 curl ,不是 postman
    putaozhenhaochi
        2
    putaozhenhaochi  
       21 天前
    curl -X POST -H "Content-Type: multipart/form-data" -F "file=@/path/to/local/file"
    iv8d
        3
    iv8d  
    OP
       21 天前
    @wchcastle 道理一样哈,不然得给你截图了。
    iv8d
        4
    iv8d  
    OP
       21 天前
    @putaozhenhaochi 你这不行得,连地址都没有。
    iv8d
        5
    iv8d  
    OP
       21 天前
    我这问题啥什么上不了首页呢
    已经使用自带得 AWS 签名访问了,内容如题
    putaozhenhaochi
        6
    putaozhenhaochi  
       21 天前 via Android
    @iv8d 把饭喂你嘴里?
    iv8d
        7
    iv8d  
    OP
       21 天前
    @putaozhenhaochi 瞧您这脾气,我在例子里写了 curl 了。难道没覆盖你得例子?
    iv8d
        8
    iv8d  
    OP
       21 天前
    下载示例 ,这个是成功的
    ```
    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
        9
    iv8d  
    OP
       21 天前
    相同 Auth 配置下,为什么上传不行,还需要哪些设置呢
    ysy950803
        10
    ysy950803  
       21 天前
    这个问题,AI 那边怎么说? minio 应该是符合 S3 标准的吧,要不看看 S3 的文档。
    iv8d
        11
    iv8d  
    OP
       21 天前
    @ysy950803 AI 说让检查 authentication ,看 curl 内容,我确定只加了一种 auth 。在 postman 里仅选了一种,没有额外的 headers 。
    rogerhesong
        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"'
    iv8d
        13
    iv8d  
    OP
       21 天前
    我选了 postman 里的 auth 里的 aws ,生成出来的就是 uthorization: AWS4-HMA 形式的。下载没问题,就上传不行。
    iv8d
        14
    iv8d  
    OP
       21 天前
    @rogerhesong 大佬你这个示例在哪看的,官网有相关的描述吗,policy 是 readwrite 吗。
    iv8d
        15
    iv8d  
    OP
       21 天前
    @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
        16
    iv8d  
    OP
       21 天前
    成功了,默认创建的 user 的 access-key 仅有查看权限,增加了 s3:PutObject 上传权限就可以了
    iv8d
        17
    iv8d  
    OP
       21 天前
    使用 put 单文件方式,不用 form-data ,否则会提示 multiple authentication types
    onesixthree
        18
    onesixthree  
       21 天前
    直接生成预授权链接,然后通过预授权链接直接 put 文件
    iv8d
        19
    iv8d  
    OP
       21 天前 via Android
    @onesixthree 在哪生成,预授权需要签名什么的。我这想不用 sdk 访问试试
    rogerhesong
        20
    rogerhesong  
       21 天前
    @iv8d 我这是 sdk 生成的预签名参数,然后前端组装发起请求,不过我这是比较老版本私有化部署的,不一定适用
    zihuyishi
        21
    zihuyishi  
       21 天前
    简单,你用 aws s3 sdk ,然后配置里配置打印请求的信息,然后他会把 url 和 headers ,body 这些都打印出来,你直接照抄就行。
    iv8d
        22
    iv8d  
    OP
       21 天前 via Android
    @zihuyishi 谢谢大佬我试试这种方法
    l4ever
        23
    l4ever  
       21 天前
    @wchcastle 你要不要看看你在说什么?
    onesixthree
        24
    onesixthree  
       20 天前
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3346 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:48 · PVG 12:48 · LAX 21:48 · JFK 00:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.