Sample project for demonstrating how to upload file from web through express to Amazon S3 (Simple Storage Service) by aws-sdk
git clone https://github.com/ryanhanwu/express-upload-amazon-s3.git
npm install
- Edit
/config.json
{
"accessKeyId": "XXXXXXXXXXXXXXXXXXX",
"secretAccessKey": "XXXXXXXXXXXXXXXXXXXXXXXXX",
"region": "us-east-1"
}
- Edit
/routes/upload.js
, update the value of Bucket to your bucket name.
s3.putObject({
Bucket: 'XXXXX Bucket Name', //S3 Bucket Name
Key: file.originalname, //Upload File Name, Default the original name
Body: data
}, this);
node app.js
Now check http://localhost:3000
PermanentRedirect: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
Solution: The region settings might be wrong, please check your config.json
and make sure the region
is correct
[AccessDenied: Access Denied]
Solution: Try update your S3 Bucket's CORS Configuration
to following
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
- Document From Amazon