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

Forum Discussion

fapb88ve's avatar
fapb88ve
Explorer | Level 4
9 years ago
Solved

Downloading a file from using the Python Dropbox API

Hello,

 

Sorry for the basic question. I'm updating the code I had for the V1 Python API and I'm having a trouble with the download function. Originally I used the following:

f, metadata = client.get_file_and_metadata('/' + j)
out = open(j)
out.write(f.read())
out.close()

Where 'j' is just a name of a picture from a list of names; this was what was used in the tutorial for the previous answer. Now, it seems that in the newest version of the API that function is gone and there seem to be two replacements: 'files_download()' and 'files_download_to_file()'. I'm confused because both essentially produce the same type of response: 

(dropbox.files.FileMetadata, requests.models.Response)

What would be the correct way to transform the previous methodology to the new one?

 

Thanks,

  • The files_download method is the closest to what you were using. The files_download_to_file method takes an extra parameter for saving the file locally for you.

     

    So either of these should be equivalent to your old code:

     

    metadata, f = dbx.files_download('/'+ j)
    out = open(j, 'wb')
    out.write(f.content)
    out.close()

     

    or just

     

    dbx.files_download_to_file(j, '/'+ j)

7 Replies

Replies have been turned off for this discussion
  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    9 years ago

    The files_download method is the closest to what you were using. The files_download_to_file method takes an extra parameter for saving the file locally for you.

     

    So either of these should be equivalent to your old code:

     

    metadata, f = dbx.files_download('/'+ j)
    out = open(j, 'wb')
    out.write(f.content)
    out.close()

     

    or just

     

    dbx.files_download_to_file(j, '/'+ j)
  • hilaal_leo's avatar
    hilaal_leo
    New member | Level 2
    8 years ago

    Hi Greg

     

    metadata, f = dropbox.file_download_details('/test.pdf')
    out = open('test.pdf', 'wb')
    out.write(f.content)
    out.close()

     

     

    I am getting the following error in terminal 

     

    metadata, f = dropbox.file_download_details('/test.pdf')

     AttributeError: 'module' object has no attribute 'file_download_details'

     

    Thanks in advance

  • JatinSingh2012's avatar
    JatinSingh2012
    New member | Level 2
    8 years ago

    Hi Greg,

    I am currently reading multiple files by a for loop and I dont want to keep saving these pdfs on my desktop and then reading them. Is there a way around this where I dont need to download the file?

     

     

  • Greg-DB's avatar
    Greg-DB
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    7 years ago

    hosamsandid The variable 'j' was used in the original code sample shared in this thread, but the definition of its value wasn't shown. In that context though, it would've just been a file name, like "example.jpg". 

    It was used both on the Dropbox API, formatted as "/example.jpg", for instance, and to open a local file.

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!