Как получить идентификатор файла, чтобы я мог выполнить загрузку файла из Google Drive API на Android?
Я работаю над проектом Android и пытаюсь использовать API Google Drive, и у меня большая его часть работает, но у меня возникла проблема с выполнением загрузки.
Я нигде не могу найти, как получить идентификатор файла, чтобы я мог выполнить загрузку. Чтобы проверить, я извлек все файлы в моей учетной записи диска и добавил их в массив списка, а затем получил идентификатор для первого файла в списке.
Затем я скопировал идентификатор файла в команду для загрузки файла, и это сработало успешно, но я понятия не имею, как получить идентификатор файла конкретного файла, который я хочу загрузить.
Ниже приведен код, который я использую для загрузки файла.
private void downloadFile()
{
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try
{
com.google.api.services.drive.model.File file = service.files().get("0B-Iak7O9SfIpYk9zTjZvY2xreVU").execute();
//FileList file = service.files().list().execute();
//List<com.google.api.services.drive.model.File> fileList = file.getItems();
//com.google.api.services.drive.model.File fileItem = fileList.get(0);
//Log.d("FileID" , fileItem.getId());
//Log.d("Count", "Retreived file list");
if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0)
{
HttpResponse resp = service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl())).execute();
InputStream inputStream = resp.getContent();
writeToFile(inputStream);
}
}
catch (IOException e)
{
Log.e("WriteToFile", e.toString());
e.printStackTrace();
}
}
});
thread.start();
}
0B-Iak7O9SfIpYk9zTjZvY2xreVU
- это идентификатор файла, который я загружаю, который я извлек, когда 0B-Iak7O9SfIpYk9zTjZvY2xreVU
список и выбрал первый файл, но как я могу сказать, что хочу загрузить File_1 и получить его идентификатор, чтобы затем передать его службе. get(). выполнить функцию.
По сути, моя конечная цель - это приложение, я загружаю файл XML на Google Drive, а затем загружаю файл. Это будет только один файл и всегда будет иметь одинаковое имя. Собираюсь ли я сделать это сразу или есть лучший способ добиться того, что я пытаюсь сделать?
Ответы
Ответ 1
Ну, первый вариант, о котором я мог подумать, - отправить запрос list
с параметры поиска для вашего файла, например title="File_1.xml" and fileExtension="xml"
. Он либо вернет пустой список файлов (не соответствует критериям serach), либо вернет список, по крайней мере, с одним файлом. Если это только один - это легко. Но если их больше - вам придется выбрать один из них на основе некоторых других полей. Помните, что в gdrive у вас может быть более одного файла с тем же именем. Таким образом, чем больше параметров поиска вы предоставляете, тем лучше.
Ответ 2
На мой взгляд, самый простой и быстрый способ получить идентификатор файла на Google Диске - использовать Google Drive в Интернете. Щелкните правой кнопкой мыши имя файла и выберите " Получить доступную ссылку". Последняя часть ссылки - это идентификатор файла. Затем вы можете отменить обмен.
Ответ 3
Один из способов - связать уникальные свойства с вашим файлом во время создания.
properties = "{ \
key='somekey' and \
value='somevalue'
}"
затем создайте запрос.
query = "title = " + "\'" + title + "\'" + \
AND + "mimeType = " + "\'" + mimeType + "\'" + \
AND + "trashed = false" + \
AND + "properties has " + properties
Все свойства файла (название и т.д.), которые уже известны вам, можно найти здесь +.
Ответ 4
Этот script регистрирует все имена файлов и идентификаторы в диске:
// Log the name and id of every file in the user Drive
function listFiles() {
var files = DriveApp.getFiles();
while ( files.hasNext() ) {
var file = files.next();
Logger.log( file.getName() + ' ' + file.getId() );
}
}
Кроме того, страница Files: list" имеет форму в конце, в которой перечислены метаданные всех файлов на диске, что можно использовать, если вам нужно, но несколько идентификаторов.
Ответ 5
Нажмите правой кнопкой мыши на файл на вашем Google Диске. Выберите опцию, чтобы получить ссылку, которой можно поделиться из меню. Вы увидите идентификатор файла сейчас. Не забудьте отменить долю.
Ответ 6
Идеальная идея Stan0 не является хорошей идеей. Могут быть несколько файлов с тем же именем. Очень склонная к ошибкам реализация. Вторая идея Stan0 - правильный путь.
Когда вы сначала загружаете файл в хранилище дисков Google, его идентификатор (в SharedPreferences, вероятно, самый простой) для последующего использования
т.
file= mDrive.files().insert(body).execute(); //initial insert of file to google drive
whereverYouWantToStoreIt= file.getId(); //now you have the guaranteed unique id
//of the file just inserted. Store it and use it
//whenever you need to fetch this file
Ответ 7
Если вы знаете имя файла, и если вы всегда хотите загрузить этот конкретный файл, вы можете легко получить идентификатор и другие атрибуты для нужного файла: https://developers.google.com/drive/v2/reference/files/list (внизу вы найдете способ запуска запросов). В поле q введите title= 'your_file_name' и запустите его. Вы должны увидеть, что некоторые результаты появляются прямо внизу и внутри него должно быть поле "id". Это идентификатор, который вы ищете.
Вы также можете играть с дополнительными параметрами: https://developers.google.com/drive/search-parameters