You might see that the Dropbox Community team have been busy working on some major updates to the Community itself! So, here is some info on what’s changed, what’s staying the same and what you can expect from the Dropbox Community overall.

Forum Discussion

DavidM27's avatar
DavidM27
Explorer | Level 4
5 years ago

Download shared file from shared link

Hello,

 

I'm building a web app using Dropbox API, that app may be use to share some files to people that does not have a dropbox, so I created a share link via the API and then I want those people to be able to download it directly from the app.
I need the file to be download in the app because the file has to be manipulated before being downlodable by the uer.
What I tried was to use the share link and make an XHR request with the share link replacing the query parameter ?dl=0 by ?dl=1.
Buty obvioulsy this can not work because dropbox does not let me download it because of the CORS policy.
Can you tell if it is possible to download a file without being connected to dropbox and directly from my web app ?

  • Unfortunately I don't have a good solution to offer here. Using a shared link with the parameter modification is the best way to share read-only access to a file when the recipient doesn't have a Dropbox account. As you found though, these can't be requested programmatically in browser JavaScript due to the CORS policy.

     

    Alternatively, you could have your server do the download first, and then pass the contents down to end-user's browser instead. This would come at the expense of extra server bandwidth consumption though.

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Staff rankDropbox Staff

    Unfortunately I don't have a good solution to offer here. Using a shared link with the parameter modification is the best way to share read-only access to a file when the recipient doesn't have a Dropbox account. As you found though, these can't be requested programmatically in browser JavaScript due to the CORS policy.

     

    Alternatively, you could have your server do the download first, and then pass the contents down to end-user's browser instead. This would come at the expense of extra server bandwidth consumption though.

    • DavidM27's avatar
      DavidM27
      Explorer | Level 4

      Thank you Greg for your reply.
      As a workaround I tried to use the dl.dropboxusercontent.com redirect link but it does work only with file not with folder... So we'll have to find another solution.

       

      • eliotcole's avatar
        eliotcole
        Explorer | Level 4

        Hi, DavidM27 , you could use the cloud API functionality of the various cloud based automation programs out there like Power Automate (Flow), automate.io, zapier, etc.

         

        There might be a limit for the file size (Google used to max out at 50MB) either on Dropbox or the other end of the equation.

         

        Equally, instead of open-ended download, you could have your users use a local folder with something like Dropbox, and create an app to copy it to their specific folder, which will then sync to their local folder.

        ( this seems like a valid use of all the bricks in this lego set ;-) ... )

         

    • dgtal box's avatar
      dgtal box
      Explorer | Level 3

      How can I make my server download first?

      const file = createWriteStream(filePath);
      https.get(fileURL, response => {
      response.pipe(file);
      file.on('finish', () => {
      file.close();
      resolve();
      });
      }).on('error', err => {
      fs.unlink(filePath, () => reject(err)); // Delete the file asynchronously on error
      });

      The code works for other content links. but doesn't works for the dropbox link.
      I tired dl=1, raw=1. But still it doesn't work.

      All i got everytime are invalid files.

       

      • Здравко's avatar
        Здравко
        Legendary | Level 20

        Hi dgtal box,

        It's never good idea using temporary derivative of shared link. The issue here is that... it's temporary - that's why expires. Use either the shared link itself or supported modification only instead. 😉

        Hope this helps.

About Dropbox API Support & Feedback

Node avatar for Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

5,888 PostsLatest Activity: 4 hours ago
326 Following

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 or Facebook.

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!