Загрузить / скачать файлы CloudRail Android / Dropbox - PullRequest
0 голосов
/ 17 мая 2018

Я работаю с CloudRail для загрузки / выгрузки файлов из Dropbox на мое устройство Android.Я не знаю, как реализовать методы upload или download .Я теряюсь с каталогами путей к файлам, когда дело доходит до создания простого файла .txt для загрузки.

Что я хотел бы сделать, это записать / прочитать простую строковую переменную в файл.txt и загрузите его в dropbox. Создание файлов во внешней памяти устройства и последующая их загрузка также будут возможны.

Я также провел некоторые исследования с образцами CloudRail на GitHub, но естьмного кода относительно визуального интерфейса, который мне не нужен, и мешает мне найти решение.Я также обнаружил, что post связан с моими потребностями, но я не смог воспроизвести его.Более того, я разместил сообщение на форуме CloudRail без ответов.

Заранее благодарим вас за ваше время

    private void uploadItem(final String name, final Uri uri) {
    startSpinner();
    new Thread(new Runnable() {
        @Override
        public void run() {
            InputStream fs = null;
            long size = -1;
            try {
                fs = getOwnActivity().getContentResolver().openInputStream(uri);
                size = getOwnActivity().getContentResolver().openAssetFileDescriptor(uri, "r").getLength();
            } catch (Exception e) {
                stopSpinner();
                getOwnActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(context, "Unable to access file!", Toast.LENGTH_SHORT).show();
                    }
                });
                return;
            }

            String next = currentPath;
            if(!currentPath.equals("/")) {
                next += "/";
            }
            next += name;
            getService().upload(next, fs, size, true);

            getOwnActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    updateList();
                }
            });
        }
    }).start();
}

1 Ответ

0 голосов
/ 18 мая 2018

Функция загрузки с использованием CloudRail SDK использует всего 4 параметра, как описано в нашей документации :

/**
 * @param path The destination path for the new file
 * @param stream The file content that will be uploaded
 * @param size The file size measured in bytes
 * @param overwrite Indicates if the file should be overwritten. Throws an error if set to false and the specified file already exists
 * @throws IllegalArgumentException Null or malformatted path, null stream or negative file size
 */
void upload(
    String path,
    InputStream stream,
    Long size,
    Boolean overwrite
);

Как видно выше, параметр потока должен указывать на байты источникаэто должно быть загружено , в вашем случае параметр потока в настоящее время NULL .Неважно, откуда поступает поток (SD-карта, диск, память и т. Д.), Если полученные байты отправляются в параметре stream .Возможное решение для вашего кода: (при условии, что созданный файл существует и успешно загружен)

File temp = new File(context.getFilesDir(), String.valueOf(System.nanoTime()));
        InputStream stream = new FileInputStream(temp);;
        long size = temp.length();
        dropbox.upload("/TestFolder",stream,size,true);
...