问题
I'm building an application to automatically trigger a download of a Dropbox file shared with a user (shared file/folder link). This was straight forward to implement for Dropbox links to files, as is outlined here.
Unfortunately this doesn't work for shared folders. Anyone have suggestions on how I could
- Download the all of it's contents (maybe get a list of the files links inside it to download?) or
- Download a zip of the folder
Currently I can go to the url and do some screen-scraping to try and get the contents list, but the advantage of the solution described in the linked Dropbox blog entry for files is that no scraping is needed, so it's much more reliable and efficient.
回答1:
Dropbox's support team just filled me in on the best way to do this:
Just add ?dl=1
to the end of the shared link. That'll give you a zipped version of the shared folder.
So if the link shared with a user is https://www.dropbox.com/sh/xyz/xyz-YZ
(or similar, which links to a shared folder), to download a zipped version of that folder just access https://www.dropbox.com/sh/xyz/xyz-YZ?dl=1
Hope this helps someone else also.
回答2:
When downloading direct shared links to files through python I was getting html pages instead of actual file content. Changing ?dl=1
wasn't helping. I then noticed that wget was downloading the actual file, even when ?dl=0
. Seems like dropbox detects wget user agent and responds with the file, so setting the user agent header to Wget/1.16 (linux-gnu)
in python solved the issue, now any dropbox shared link is being downloaded properly:
headers = {'user-agent': 'Wget/1.16 (linux-gnu)'}
r = requests.get(url, stream=True, headers=headers)
with open(filepath, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
回答3:
This should really be done by using the awesome Dropbox Core API, which allows you to upload or download files, see information on file deltas and information on shared folders/files.
The API is rather simple, as it returns a common URL to download any item from Dropbox accounts with.
来源:https://stackoverflow.com/questions/20227324/programmatically-download-content-from-shared-dropbox-folder-links