cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox here.

Discuss Dropbox Developer & API

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

is there a way we can resume downloads from where it left ?

is there a way we can resume downloads from where it left ?

Sukanth
Explorer | Level 4
Go to solution

Hi Guys, 

I wrote code using dropbox java sdk to download all the files in dropbox to my NAS (Network-attached storage). The data is huge . I tried to make the process faster using thread pool executor. However, when I abruptly close the program or when a fatal error occurus it corrupts the files that were in progress. Is there a way that we can delete the files that were not fully copied at the time of the fatal error? 

below is the draft code .. a lot of improvements can be made to it. 

https://github.com/sukanth/Dropbox

1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

Yes, it looks like in that case you've only written a portion of the file, so you could check how much of the file you did write, and then use DbxDownloadStyleBuilder.range to download just the rest of the file.

Also, if it's helpful, you can use the "Content Hash" feature, available in the Java SDK as FileMetadata.contentHash, to verify if you've successfully downloaded the full and correct file contents.

View solution in original post

7 Replies 7

Sukanth
Explorer | Level 4
Go to solution

like the file is not fully downloaded. The output stream is interrupted in the middle and the whole image data is not written into the file because of the interruption. Is there a way that we can keep track of the files that were not fully downloaded and retry them again?

Greg-DB
Dropbox Staff
Go to solution

For cleaning up after failed operations, if an API call fails when you're using the Java SDK, it should raise an exception you can catch so you can perform whatever cleanup you need, such as deleting local files. 

For restarting downloads, you can actually use DbxDownloadStyleBuilder.range to restart a download at whatever point in the file you need. There's an example of using that in test test code here.

Sukanth
Explorer | Level 4
Go to solution

Partially downloaded filePartially downloaded file

when I say partially downloaded. I mean like the one in the above picture .when I stop the program abruptly this happens because the output stream is interrupted before the file is fully written on disk.  Can you suggest anything to handle this case?

Greg-DB
Dropbox Staff
Go to solution

Yes, it looks like in that case you've only written a portion of the file, so you could check how much of the file you did write, and then use DbxDownloadStyleBuilder.range to download just the rest of the file.

Also, if it's helpful, you can use the "Content Hash" feature, available in the Java SDK as FileMetadata.contentHash, to verify if you've successfully downloaded the full and correct file contents.

Sukanth
Explorer | Level 4
Go to solution

Thank you, Greg !! 

Здравко
Legendary | Level 20
Go to solution

Hi @Greg-DB,

I would ask you, why the range you mention isn't documented in HTTP documentation: https://www.dropbox.com/developers/documentation/http/documentation#files-download ? Could this lack of completeness be corrected?

ADD: For upload also.

Greg-DB
Dropbox Staff
Go to solution

@Здравко The Dropbox API actually supports range requests for all content-download style endpoints in general, so it's mentioned in the "Content-download endpoints" documentation. That could definitely be expanded on though, so I'll ask the team to improve that. Thanks!

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    Здравко Legendary | Level 20
  • User avatar
    Sukanth Explorer | Level 4
What do Dropbox user levels mean?