Need to see if your shared folder is taking up space on your dropbox 👨‍💻? Find out how to check here.

Forum Discussion

zainulabd786's avatar
zainulabd786
Explorer | Level 3
7 years ago
Solved

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 the files to

root > Clients > Somefolder

Clients and Somefolder are the folders created by me.

Here's my code:

const uploadClientData = async (req, res) => {
	try {
		const files = req.files
		const { dbxUser } = req;
		const args = {
			contents: files,
			path: '/Clients/Wise',
			mode: 'add',
			autorename: true,
			mute: false,
			strict_conflict: false
		}
		await dbxUser.filesUpload(args);

		res.status(200).json({message: "Uploaded"});
	} catch (error) {
		console.log(error)
		res.status(500).json({
			error: error
        });
	}
}

And here my dropbox Initialization

module.exports = async (req, res, next) => {
    try {

        let dbxTeam = new DropboxTeam({ fetch: fetch });
        let access_token;

        dbxTeam.setClientId("XXXXXXXXXX");
        dbxTeam.setClientSecret("XXXXXXXXXX");
        
        if(req.body.code){
            access_token = await dbxTeam.getAccessTokenFromCode('http://localhost:3000/authentication', req.body.code);
        } else {
            let team_member_id = req.userData.team_member_id
            access_token = await helpers.getAdminDetails({team_member_id}, "access_token")
            access_token = access_token[0].access_token;
        }
        
        dbxTeam.setAccessToken(access_token);
        let { admin_profile } = await dbxTeam.teamTokenGetAuthenticatedAdmin()

        let dbxUser = new Dropbox({
            accessToken: access_token, 
            selectUser: admin_profile.team_member_id, 
            pathRoot: JSON.stringify({".tag": "root", "root": "5619027360"}) 
        })
        
        req.dbxTeam = dbxTeam,
        req.dbxUser = dbxUser
        next();
    } catch (error) {
        return res.status(500).json({
            message: 'Dropbox Init failed',
            error: error
        });
    }
};
  • Greg-DB's avatar
    Greg-DB
    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!

11 Replies

Replies have been turned off for this discussion
  • MatthieuWdi's avatar
    MatthieuWdi
    New member | Level 2
    4 years ago

    Hello guys,

     

    I searched for a long time and found a way to make it esaylly so I hope my cade can help you.

     

    const PHOTO_SAVE_FOLDER = 'C:/Users/matth/Desktop/'
    
    /**
    * eventName : foler name where are my files to upload on my computer
    * folder : dropbox folder name i when to save my files
    */
     const uploadPhotosOnDropbox = async (eventName,folder) => {
      const errors = [];
      const photosInMyComputer = `${PHOTO_SAVE_FOLDER}${eventName}/${folder}/`
      let photosToUplaod = fs.readdirSync(photosInMyComputer);
      let folderPath = `/Events/${eventName}/${folder}`; // path for dropbox
    
      // create the folder in dbx,  around with try/catch
      await dbx.filesCreateFolderV2({ path : folderPath, autorename:false}); 
    
      photosToUplaod.map((photo, idx) =>{
          fs.readFile(`${photosInTheBorne}${photo}`, (err, data) => {
            setTimeout(()=> {
            let path = `/Events/${eventName}/${folder}/${photo}`;
            const contents = data;
            dbx.filesUpload({ path, contents })
          },idx * 2000);
        });
      });
    
    uploadPhotosOnDropbox('09-08-22-MATT', 'persoFolder');

About Dropbox API Support & Feedback

Node avatar for 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!