This is the code for generating presigned url:
const params = {
Bucket: "bucket-name",
Key: "atya.png",
Expires: 6000,
ContentType: fileType,
ACL: "public-read"
};
s3.getSignedUrl("putObject", params, function(err, url) {
res.send(url);
});
The code to upload from vue app:
const res = await axios.put(signedURL, file, {
headers: {
"Content-type": "image/png",
"x-amz-acl": "public-read",
}
});
console.log(res);
I have enabled cors and given * as you can see in the image: https://imgur.com/a/GoHCeYo
In the network tab I still see a 403 forbidden:
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.
I have the same issue and I narrowed it down to the MD5 hash I was using for the upload.
When I tried the request in Postman with the
Content-MD5
headers it returned a 403 withThere were headers present in the request which were not signed
error