cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
What’s new: end-to-end encryption, Replay and Dash updates. Find out more about these updates, new features and more here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to download files from a publicly shared folder?

How to download files from a publicly shared folder?

psehrawat
New member | Level 2

We developed an app using an endpoint from v1 /1/metadat/link (to list all from a shared link). I couldn't find any endpoint from v2 having same functionality.

 

My app has a simple a functionality, given a shared link it should download all the files from this shared link. Any help would be appreciated.

16 Replies 16

RichardTSchaefe
New member | Level 2

I am using a WEB API for manipulating user files when I am acting on behalf of a dropbox user.

However I can have a user that does not have a dropbox account that is presented with the shareded folder link.

 

If I want to use the shared_link in the files/list_folder request  so I can traverse this shared folder.

Can do so without an authentication token ? 

As I indicated I have a use case where I do not have a dropbox account, but I have been granted the shared_link ... so the user does have access to the content.

 

If the shared_link had a password ... what would the JSON payload need to contain to access the folder ? 

 

 

Greg-DB
Dropbox Staff

@RichardTSchaefe The list_folder endpoint unfortunately doesn't support "app authentication" (i.e., so no user access token is required), only "user authentication" (where a user access token is required), so I'm afraid I don't have a good solution for this use case. I'm sending this along as a feature request.

RTS S.
Helpful | Level 6

I can traverse the folder Shared Folder using a USER token (as opposed to a App/User token) using the files/list endpoint.

The path is relative to this shared folder.

 

Do I use a path of the form {id:UniqueID} ? with the files/download request ?

Or do I somehow have to use the {sharing_info: ???? } property ? 

 

If it's the former ... can I use a path of the form {id:UniqueID} in the files/list_folder request ? 

If I could vote ... I would prefer using {id:UniqueID} doe /list folder ... then to access a folder (your own, or a shared, you only need the UniqueID)... the filesystem like path is then determined by the context of the request.

 

Greg-DB
Dropbox Staff

@RTS S. Both /2/files/list_folder and /2/files/download support both file IDs and paths. (You can check the supported formats in the documentation for the 'path' value.)

 

So, for instance when calling /2/files/list_folder, you can supply the 'path' parameter containing either the 'id' of the folder you want to list, or the full path to the folder.

 

Likewise, when calling /2/files/download you can supply the 'path' parameter containing either the 'id' of the file you want to download, or the full path to the file.

RTS S.
Helpful | Level 6

 

I use the same code to Navigate (files/list_folder) and download (files/download) for both my APP/User token and for a shared folder using a User token.
I am able to download a file using an id:xxxx for the path using my APP/User token. But having problems with the shared folder:

The following is for a Test File in a Test Account.

URL:
POST: https://api.dropboxapi.com/2/files/list_folder

post args:
{ "path": "", "shared_link": { "url": "https://www.dropbox.com/sh/tva3ktdtul2qkth/AACU1dkvaBr31u6sIiDstKACa"}, "include_media_info": false, "include_deleted": false}

Result:
{
  "entries": [
     {".tag": "file", "name": "2-11011_in__flight.jpg.sdvef", "parent_shared_folder_id": "3372935536", "id": "id:sQqvvpADHyAAAAAAAAAAIA", "client_modified": "2018-06-21T13:49:31Z", "server_modified": "2018-06-21T13:49:32Z", "rev": "12c90ae970", "size": 99110, "sharing_info": {"read_only": true, "parent_shared_folder_id": "3372935536", "modified_by": "dbid:AACm4Dw3RG5ecK3uwT2z3MVi2GWwuS6rYBg"}, "content_hash": "442d907dc20fffe801d271a6512e5c58906adb157329e5e9356b91e323a9d2bb"}
    ],
    "cursor": "AAH96nNWXINQZ4eyuP2VShr5_NM-LfHyN_XSlyR98jhdwct-3t3fIncgCM7X9Eh_-LRQk4jP-IMK52-wQSQKFXCGyseUo3xm8Izh8_9GI_9_EVbB1RYrEiGV9BLNX3znJKUhxnsB8_Q_euGZBBe_X34_0f85NXG595ciaEmzWj7HtXhfLEFQPhlCqu05XoRSQUs8NNkHU3up60VaD6-Zp6Fsn2iem9h9gLuQIWpc8C9O-meRNmAyafZW9FvTT2zAi8r6xkUg-BUJkLUYYVTNmTM_",
    "has_more": false
}


URL:
GET https://content.dropboxapi.com/2/files/download
Headers:
    Dropbox-API-Arg {"path":"id:sQqvvpADHyAAAAAAAAAAIA"}
    Range  bytes=0-99109
Result:
ERROR:
    Content: {"error_summary": "path/not_found/.", "error": {".tag": "path", "path": {".tag": "not_found"}}}
    Headers: {
    	     Content-Security-Policy: sandbox, sandbox allow-forms allow-scripts
  	     Connection: keep-alive
	     Server: nginx
	     X-WebKit-CSP: sandbox
	     Transfer-Encoding: chunked
	     Date: Tue, 26 Jun 2018 23:35:18 GMT
	     X-Content-Security-Policy: sandbox
	     Vary: Dropbox-API-Arg, Authorization
	     X-Robots-Tag: noindex, nofollow, noimageindex
	     X-Content-Type-Options: nosniff
	     X-Dropbox-Request-Id: 8e068903125489c79e7132583f05b8d7
	     }

Do I need to do something different for downloaing a file from a shared URL ? I provided the public link .... but it's a test account with a test folder with a single file. I provided it so you might try accessing the file ... 

Greg-DB
Dropbox Staff

@RTS S. I see, thanks for clarifying and providing the sample. In this case, based on this error, it sounds like you have a shared link from a different user than the one that the access token is for. That being the case, you can't directly access the file via ID, since it isn't in the authorized user's account.

 

Instead, after listing the contents, to download a file from the folder that the shared link points to, you should use /2/sharing/get_shared_link_file (instead of /2/files/download). That allows you to download files based on the shared link itself.

RTS S.
Helpful | Level 6

Thank you ... I have everything I need.

 

As I indicated it would still be a nice feature to be able to access to a publicly shared folder/file without the need to authenticate any user.

If I have the shared URL as an end user I can use a browser to navigate the folder and download a publicly shared folder ... I do not need to authenticate with any dropbox account.  

 

I should be able to do the same with maybe an APP TOKEN (not a login to the dropbox app) to provide some traceability. Then providing the URL I should be able to navigate and download the publicly shared files and folders. 

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    RTS S. Helpful | Level 6
  • User avatar
    Greg-DB Dropbox Staff
What do Dropbox user levels mean?