cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
The Dropbox Community is looking for feedback from you! Sign up to be a part of our customer panel 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: 

Unable to download file to a desired path via files_download_to_file using the python api

Unable to download file to a desired path via files_download_to_file using the python api

peytonshc
Explorer | Level 3

I am using the files_download_to_file function to try and download a file from my dropbox to a specific location.  As parameters I am giving it '/home/user/Desktop' and it is saying IOError: [Errno 21] Is a directory.  I am not sure what is wrong with this and would greatly appreciate any support.

7 Replies 7

Greg-DB
Dropbox Staff

When calling files_download_to_file, the `download_path` parameter should be the full local path where you want to save the file, including the file name and extension. So, instead of '/home/user/Desktop', you should supply something like '/home/user/Desktop/filename.ext'. 

peytonshc
Explorer | Level 3

I tried that before but got TypeError: 'FileMetadata' object is not iterable when I try and write it.

Greg-DB
Dropbox Staff
It looks like there's a mistake in the documentation (we'll get that fixed up), but the files_download_to_file method actually just returns a FileMetadata object (not a tuple), so make sure you're not trying to unpack the result.

I.e., your code should look something like `metadata = dbx.files_download_to_file(...)` not `metadata, result = dbx.files_download_to_file(...)`.

peytonshc
Explorer | Level 3

That works now but I am curious why when I run the program it download the files to the directed directory as well as the current directory.  I would like this to just happen in the directed directory.

Greg-DB
Dropbox Staff
The files_download_to_file method should just download a single copy of the file to wherever you specify in the download_path parameter. Can you share code that reproduces the unexpected behavior you're seeing?

peytonshc
Explorer | Level 3

Here is an example:

 

 

with open('Resume BigRed.pdf', "wb") as f:
    try:
        metadata = dbx.files_download_to_file('/home/ubuntu-mate/Desktop/test/Resume BigRed.pdf', "/Resume BigRed.pdf")
f.write(metadata)     except TypeError:
print("Ignoring TypeError")

 

I'm using the try to avoid the TypeError for entering metadata but it runs.

Greg-DB
Dropbox Staff
In this sample, the `files_download_to_file` method will save the file to '/home/ubuntu-mate/Desktop/test/Resume BigRed.pdf'.

Separately, you're calling `open` and `f.write(metadata)`, which will save the file metadata (not the file content) to a file 'Resume BigRed.pdf' in the current directory. If you don't want that file, remove your `open` and `write` calls.
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    peytonshc Explorer | Level 3
What do Dropbox user levels mean?
Need more support?