如何获取文件ID,以便我可以在Android上从Google Drive API下载文件?

Boa*_*rdy 19 android google-drive-api

我正在开发一个Android项目,我正在尝试使用Google Drive API并且我已经完成了大部分工作,但我在如何执行下载时遇到了问题.

我无法在任何地方找到我如何获取文件ID以便我可以执行下载.为了测试我检索到的所有文件在我的硬盘帐户,并将它们添加到列表数组,然后拿到ID列表中的第一个文件.

然后我将文件ID复制到命令下载文件,这成功地工作但我不知道如何获取我想下载的特定文件的文件ID.

下面是我用来下载文件的代码.

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();
}
Run Code Online (Sandbox Code Playgroud)

0B-Iak7O9SfIpYk9zTjZvY2xreVU 是我下载的文件的文件ID,当我输入列表并选择第一个文件时,我检索了该文件,但是我怎么能说我想下载File_1并获取其ID然后将其传递给service.get() .execute函数.

基本上我的最终目标是在我的应用程序中,我将XML文件上传到Google云端硬盘,然后再下载文件.它只是一个文件,并且始终具有相同的名称.我是马上去做的还是有更好的方法来实现我想做的事情?

Rom*_*Roc 39

根据我的观点,获取Google云端硬盘文件ID的最简单快捷方式是来自Google云端硬盘,右键单击文件,然后点击获取可共享链接.链接的最后一部分是文件ID.然后你可以取消共享.

  • 这应该是推荐的答案,这是最简单的! (2认同)
  • 虽然有点黑客,也许还假设您有权管理该文件 (2认同)

Jua*_*nus 7

此脚本记录驱动器中的所有文件名和 ID:

// Log the name and id of every file in the user's Drive
function listFiles() {
  var files = DriveApp.getFiles();
  while ( files.hasNext() ) {
    var file = files.next();
    Logger.log( file.getName() + ' ' + file.getId() );
  }
}  
Run Code Online (Sandbox Code Playgroud)

此外,“文件:列表”页面的末尾有一个表格,其中列出了驱动器中所有文件的元数据,如果您只需要一些 ID,可以使用它。


sta*_*an0 5

好吧,我能想到的第一个选项是您可以发送list带有文件搜索参数的请求,例如title="File_1.xml" and fileExtension="xml". 它将返回一个空的文件列表(没有一个与 serach 标准匹配),或者返回一个包含至少一个文件的列表。如果只有一个 - 这很容易。但如果有更多 - 您必须根据其他一些字段选择其中之一。请记住,在 gdrive 中,您可以拥有 1 个以上的同名文件。所以你提供的搜索参数越多越好。


Amb*_*rni 5

一种方法是在创建时将独特的属性与文件关联起来。

properties = "{ \
    key='somekey' and \
    value='somevalue'
}"
Run Code Online (Sandbox Code Playgroud)

然后创建一个查询。

query = "title = " + "\'" + title + "\'" + \
        AND + "mimeType = " + "\'" + mimeType + "\'" + \
        AND + "trashed = false" + \
        AND + "properties has " + properties
Run Code Online (Sandbox Code Playgroud)

您已知的所有文件属性(标题等)都可以转到此处+属性。


小智 5

用鼠标右键单击 Google Drive 中的文件。选择获取可从菜单共享的链接的选项。您现在将看到文件 ID。不要忘记撤消共享。