Загрузить / скачать файлы CloudRail Android/Dropbox
Я работаю с CloudRail для загрузки / выгрузки файлов из Dropbox на мое устройство Android. Я не знаю, как реализовать загрузку или методы загрузки. Я заблудился с каталогами путей к файлам, когда дело доходит до создания простого файла.txt для загрузки.
Я хотел бы написать / прочитать простую строковую переменную в file.txt и загрузить ее в dropbox. Создание файлов во внешней памяти устройства и последующая их загрузка также возможны.
Я также провел некоторое исследование с примерами CloudRail на GitHub, но есть много кода относительно визуального интерфейса, который мне не нужен, и мешает мне найти решение. Я также нашел пост, связанный с моими потребностями, но не смог воспроизвести его. Более того, я разместил сообщение на форуме 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 ответ
Функция загрузки с использованием 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);