【问题标题】:How to upload amazon s3 using curl using a presigned token?如何使用 curl 使用预签名令牌上传 amazon s3?
【发布时间】:2016-05-13 14:40:49
【问题描述】:

我正在为移动平台开发一个 API 来上传文档。 该过程包括 3 个步骤:

  1. 调用 API 以接收预签名令牌集。
  2. 使用该令牌集上传到 s3。
  3. 使用第 2 步返回的密钥通过 API 创建文档实体。

第 2 步有问题。 下面是 curl 命令:

curl -F "key=<key>/${filename}" 
-F "AWSAccessKeyId=<...>" 
-F "success_action_status=201" 
-F "Policy=<...>" 
-F "Signature=<...>" 
-F "file=@/Users/boti/Desktop/BotondsPhoto.png" https://<bucket>.s3.amazonaws.com

curl 命令上传文件并返回一个 xml,如:

<?xml version="1.0" encoding="UTF-8"?>
<PostResponse>
  <Location>https://<...>.s3.amazonaws.com/3%2Fe055ff06-9938-4f5c-b5c4-7b6a6df34a6f%2F</Location>
  <Bucket>...</Bucket>
  <Key>3/e055ff06-9938-4f5c-b5c4-7b6a6df34a6f/</Key>
  <ETag>"cccc1defcab53079456f245b8a1e1d2d"</ETag>
</PostResponse>

问题在于返回的密钥。斜杠后的最后一部分 ${filename} 应该已替换为文件名。它应该是这样的:

<Key><key>/Toptal Photo.png</Key>

有什么想法吗?

【问题讨论】:

    标签: curl amazon-s3 amazon


    【解决方案1】:

    我发现curl命令中的$符号需要转义:

    curl -F "key=<key>/\${filename}" \
    -F "AWSAccessKeyId=<...>" \
    -F "success_action_status=201" \
    -F "Policy=<...>" \
    -F "Signature=<...>" \
    -F "file=@/Users/boti/Desktop/BotondsPhoto.png" https://<bucket>.s3.amazonaws.com
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-22
      • 2017-02-15
      • 2021-10-03
      • 2021-09-29
      • 2010-12-02
      • 2016-07-12
      • 2018-07-19
      • 2017-10-14
      相关资源
      最近更新 更多