【发布时间】:2021-10-13 09:13:41
【问题描述】:
其实这是我第一次使用 s3 上传文件。我听说过预签名的 url 但显然,我无法设置文件大小的限制,所以我找到了“预签名的 post url”,但这有点奇怪!令人惊讶的是我没有找到任何示例。也许这不是我想要的。
我正在从服务器获取预签名的帖子网址:
const { S3 } = require("aws-sdk");
const s3 = new S3({
accessKeyId: accessKey,
secretAccessKey: secretKey,
endpoint: api,
s3ForcePathStyle: true,
signatureVersion: "v4",
});
app.post("/get-url", (req, res) => {
const key = `user/${uuri.v4()}.png`;
const params = {
Bucket: "bucketName",
Fields: {
Key: key,
ContentType: "image/png",
},
};
s3.createPresignedPost(params, function (err, data) {
if (err) {
console.error("Presigning post data encountered an error", err);
} else {
res.json({ url: data.url });
}
});
});
奇怪的是,我得到的 url 不像预签名的 url。它只是端点后跟存储桶名称。没有查询参数。没办法。
你可能猜到了,我不能使用这个网址:
await axios.put(url, file, {
headers: {
"Content-Type": "image/png",
},
});
我什至不知道我应该使用 post 还是两个 requests。
我都试过了,没有任何反应。也许预签名的 post url 不像预签名的 url!
至少给我一个例子!我找不到。
【问题讨论】:
标签: javascript amazon-web-services express amazon-s3 pre-signed-url