如何使用预签名令牌使用 curl 上传 amazon s3?
How to upload amazon s3 using curl using a presigned token?
我正在开发 API 用于移动平台上传文件。
该过程包括 3 个步骤:
- 调用 API 以接收预签名令牌集。
- 使用该令牌集上传到 s3。
- 使用第 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 命令上传文件和 returns 一个 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命令中的$符号需要转义:
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
我正在开发 API 用于移动平台上传文件。 该过程包括 3 个步骤:
- 调用 API 以接收预签名令牌集。
- 使用该令牌集上传到 s3。
- 使用第 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 命令上传文件和 returns 一个 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命令中的$符号需要转义:
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