Как скачать определенный файл с помощью Dropbox API V2? - PullRequest
0 голосов
/ 31 января 2020

Мне нужно загрузить определенный файл / папку из Dropbox, используя DbxClientV2. Я знаю путь к этому файлу, и он всегда будет одинаковым, поэтому я не хочу, чтобы пользователь выбирал его. Я видел:

public void onFileClicked(final FileMetadata file) { }

Но, похоже, это не то, что я ищу, и я не знаю, как создать FileMetadata объект, используя путь к файлу.
Я не могу найти ничего полезного. У меня образец класса от GitHub , но для этого все еще требуется FileMetadata.

1 Ответ

0 голосов
/ 31 января 2020

Хорошо, у меня заняло некоторое время, поэтому я публикую свой ответ для других.

Конечно, вам нужно указать место, где вы хотите сохранить его (но это очевидно), а затем создать OutputStream:

String path = Environment.getExternalStorageDirectory().toString() + "/DCIM";
                File file = new File(path, "test.txt");

                FileOutputStream outputStream = null;
                try {
                    outputStream = new FileOutputStream(file);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

После этого мы создаем Metadata объект и инициализируем его, а затем загружаем его, используя metadata.getPathLower().

 try {
                    Metadata pathMetadata = client.files().getMetadata("/test.txt");
                    client.files().download(pathMetadata.getPathLower()).download(outputStream);
                    Log.e("METADATA", pathMetadata.toString());

                } catch (DbxException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }

Странно, что getPathLower() возвращает "test.txt", но когда мы набираем его в формате download(), он возвращает

java.lang.IllegalArgumentException: String 'path' does not match pattern

("/test.txt" не делает ' тоже не работает).

Мне понадобилось много времени, чтобы заставить его работать, поэтому я надеюсь, что мой ответ поможет кому-то сэкономить это время.

Удачного кодирования!

...