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.

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: 

Create File object of dropbox excel file link

Create File object of dropbox excel file link

alexsajno
Explorer | Level 4

Hi, I have an app that have already the DbxChooser Class.

I have also this code:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == DBX_CHOOSER_REQUEST) {
if (resultCode == Activity.RESULT_OK) {

// Handle the result
DbxChooser.Result result = new DbxChooser.Result(data);
Log.d("TAG", "Link to selected file: " + result.getLink());

I can see on Logcat the full dropbox link and if I paste it on chrome I can download the file automatically. I want to download this link to a Jave File Obeject because after that I have a method thate receive "File" object (Excel file) and read the excel file. I tried to implement a DownloadFileTask but I could not make it.

How can I download the excel file from a link to a File object ?

I have also the DropboxClientFactory class ready:

package com.tkdcenter.StudentsListFromExcel;

/**
* Created by Alex on 18/9/2018.
*/

import com.dropbox.core.DbxRequestConfig;
import com.dropbox.core.http.OkHttp3Requestor;
import com.dropbox.core.v2.DbxClientV2;

public class DropboxClientFactory {

public static DbxClientV2 getClient(String ACCESS_TOKEN) {
// Create Dropbox client
DbxRequestConfig requestConfig = DbxRequestConfig.newBuilder("Flashcard Maker")
.withHttpRequestor(new OkHttp3Requestor(OkHttp3Requestor.defaultOkHttpClient()))
.build();
DbxClientV2 client = new DbxClientV2(requestConfig, ACCESS_TOKEN);
return client;
}
}

 

4 Replies 4

Greg-DB
Dropbox Staff

Since you're getting the link from DbxChooser, you don't necessarilly need to use DbxClientV2 at all. 

The DbxClientV2 object is for calling the full Dropbox API, but you can download directly from the Dropbox link instead.

Exactly how you do so may depend on exactly what kind of link you requested though. 

Either DIRECT_LINK or FILE_CONTENT may make sense in this case. 

For DIRECT_LINK, issue an HTTPS request to the link, e.g., using HttpsURLConnection, and save the response. (Note that these links expire after four hours though, so make sure the call succeeded before saving the data.)

For FILE_CONTENT, which should be a "file:" URL, so you should be able to open it using the File class directly. (Note that this is broken in the current version of the Dropox Android app, but will be fixed in the next version, tentatively planned for release next week.)

alexsajno
Explorer | Level 4
So If I choose FILE_CONTENT. I use the getPath method to get the full URL. What code I shoud use to create File object and download the excel file into it? and how I can follow when the new version is ready to use the code

Greg-DB
Dropbox Staff

I can't offer help with using the Android/Java File class itself unfortunately, as that's not made by Dropbox. I recommend referring to the documentation for that, or looking for Android samples or asking on a more general programming resource, e.g., StackOverflow. 

You can see when the Dropbox Android app is updated here:

https://play.google.com/store/apps/details?id=com.dropbox.android&hl=en

I'll make a note to follow up on this thread when that's done though.

Greg-DB
Dropbox Staff

The Dropbox Chooser now correctly returns local file links again for ResultType.FILE_CONTENT as of the latest version of the official Dropbox Android app, v114.

Need more support?
Who's talking

Top contributors to this post

  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    alexsajno Explorer | Level 4
What do Dropbox user levels mean?