Need to see if your shared folder is taking up space on your dropbox 👨💻? Find out how to check here.
Forum Discussion
zainulabd786
7 years agoExplorer | Level 3
How to upload multiple files using JavaScript SDK?
Hi, I am using Javascript SDK to upload multiple files at once. I have a dropbox business account enabled and the folder where I am trying to upload the files is a shared folder.
I want to upload t...
- 7 years ago
I see, thanks for clarifying. The Dropbox API doesn't offer a way to upload multiple files in one call, but I'll pass this along as a feature request. I can't promise if or when that might be implemented though.
That being the case, you will need to loop through your files and call filesUpload once per file. Apologies I don't have better news for you!
Greg-DB
Dropbox Community Moderator
7 years agoI see, thanks for clarifying. The Dropbox API doesn't offer a way to upload multiple files in one call, but I'll pass this along as a feature request. I can't promise if or when that might be implemented though.
That being the case, you will need to loop through your files and call filesUpload once per file. Apologies I don't have better news for you!
zainulabd786
7 years agoExplorer | Level 3
I have around 70 files that I am looping through to upload each file using 'filesUpload()'. The problem is this update a few files and then throw the error 429 with a message "too_many_write_operations/."
Here is my code:
const promises = []
for(const file of files){
const appDir = path.dirname(require.main.filename);
const f = `${appDir}\\${file.path.replace("/", "\\")}`;
let args = {
contents: f,
path: `${clientFolder}/${file.originalname}`,
mode: 'add',
autorename: true,
mute: false,
strict_conflict: false
}
promises.push(dbxUser.filesUpload(args))
}
const uploadedData = await Promise.all(promises);- TaylorKrusen7 years ago
Dropbox Staff
The 429 error that you are getting is due to lock contention. Basically, Promise.all() triggers all requests at the same time and waits for them to resolve before continuing. In this case, all the simultaneous requests are causing lock contention.
There are two possible solutions:
1. Execute your requests serially. This may make your script take a little longer, but is probably easier to implement since you've already made so much progress.
2. Make use of "upload sessions" which is a different endpoint. Take a look at the data ingress guide for a good explanation. As an added bonus, that guide includes a more detailed explanation of lock contention.
- zainulabd7867 years agoExplorer | Level 3
Okay! regarding your second point, According to documentation, "upload sessions" are meant for the files > 150MB, But in my case, The number of files is large but the size of each file is < 150MB.
- Greg-DB7 years ago
Dropbox Community Moderator
Upload sessions in general are meant for larger files, but you can also use them for smaller files. That makes sense in particular when you have many files to upload at the same time, because the /2/files/upload_session/finish_batch allows you to commit multiple files at once, without causing lock contention between them. You can find more information on that under "Batch Upload" in the data ingress guide Taylor linked to.
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!