问题描述
我正在尝试从html表单将上传的文件上传到aws s3,并且我正在努力签署请求。对于请求的第一部分,我需要将一些值连接在一起以创建字符串“ CanonicalRequest”:
CanonicalRequest =
HTTPRequestMethod + '\n' +
CanonicalURI + '\n' +
CanonicalQueryString + '\n' +
CanonicalHeaders + '\n' +
SignedHeaders + '\n' +
HexEncode(Hash(RequestPayload))
这是我到目前为止所拥有的:
let CanonicalRequest = "Post" + '\n' +
"/" + '\n' +
"" + '\n' +
"content-type:application/x-www-form-urlencoded; charset=utf-8\n host:s3.amazonaws.com\n; x-amz-date:" + Time3 + "\n" + '\n' +
"content-type;host;x-amz-date" + '\n' +
到目前为止,我认为这是对的,但我可能完全错了。我不知道“ RequestPayload”是什么。我发现的唯一内容表明它是html的正文,但这将包括表单以及签名本身,因此不起作用。有谁知道它是什么以及我如何使它工作?
解决方法
您似乎使用了一种困难的方式来上传文件... AWS提供了一个易于与S3交互的库
const AWS = require('aws-sdk')
const S3 = new AWS.S3()
然后您可以致电S3.putObject
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html