By Todica Lorin
Hello,
I am trying to implement the upload functionality in my Node Express application using DigitalOcean Spaces. I am using “@aws-sdk/client-s3” and I think I have the correct configuration, but for some reason I am encountering the “Region is missing” error when trying to do an upload. Here is my s3 configuration:
const s3 = new S3Client({
endpoint: "https://fra1.digitaloceanspaces.com",
region: "us-east-1",
credentials: {
accessKeyId: "accessKeyId",
secretAccessKey: "secretAccessKey"
}
});
const s3Provider = { aws: {
upload: async (file) => {
const { buffer, originalname, mimetype } = file;
const key = `uploads/${Date.now()}_${originalname}`;
const params = {
Bucket: 'your-bucket-name', // Your Space's name
Key: key, // Key to store the file under
Body: buffer, // File content
ContentType: mimetype, // MIME type of the file
ACL: ObjectCannedACL.public_read,
};
try {
// Perform the file upload
const data = await s3.send(new PutObjectCommand(params));
return {
url: `https://fra1.digitaloceanspaces.com/${key}`, // Return the file URL
key: key, // Store the file key for later reference
};
} catch (error) {
console.error('Error uploading file to DigitalOcean Spaces:', error);
throw error;
}
},
}}
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Hi there,
Based on the docs here, I think that the problem is with your S3 client configuration. Try the following:
const s3 = new S3Client({
forcePathStyle: false, // This is important!
endpoint: "https://fra1.digitaloceanspaces.com", // This is fine
region: "us-east-1", // This is correct
credentials: {
accessKeyId: "accessKeyId",
secretAccessKey: "secretAccessKey"
}
});
Double-check that your bucket name is correct in the upload params. The error might be happening because the bucket configuration is incorrect.
- Bobby
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.