无法使用java

时间:2016-05-18 08:39:07

标签: java google-drive-api

我在谷歌硬盘中创建了一个服务帐户,用于从服务器上传谷歌驱动器中的文件,然后再下载这些文件。但是当我尝试获取文件夹的文件列表并获取这些文件的webContentLinks时,它返回null。我检查了一些其他属性,它为getWebContentLink()getWebViewLink()返回null,除了文件名和文件ID。

任何人都可以帮助我获取webContentLink或者您能否找出我无法获得webContentLink的问题。

以下是我尝试的代码的一部分:

  List<String> linkList=new ArrayList<String>();
  fileFlag=0;
  pageToken = null;
  do {
      driveFiles = service.files().list()
              .setQ("mimeType!='application/vnd.google-apps.folder and "+childFolder.getId()+"' in parents ")
              .setSpaces("drive")
              .setFields("nextPageToken, files(id, name)")
              .setPageToken(pageToken)
              .execute();
      System.out.println("\n\nFile No. : "+driveFiles.getFiles().size());
      for(com.google.api.services.drive.model.File file: driveFiles.getFiles()) {
         linkList.add(file.getWebContentLink());
         System.out.println(file.getName());
         System.out.println("File Link : "+file.getWebContentLink());
         System.out.println(file.getId());
         System.out.println(file.getWebViewLink());
      }
      pageToken = driveFiles.getNextPageToken();
  } while (pageToken != null);

这是输出

之一
File No. : 4
V2__data.sql
File Link : null
0BzCRyzakN8eJOGRTODhXTFkxUWc
null
V1__table.sql
File Link : null
0BzCRyzakN8eJT09BbG5JUFdNYmc
null
V2__data.sql
File Link : null
0BzCRyzakN8eJa0FyUGw3UFZJZ00
null
V1__table.sql
File Link : null
0BzCRyzakN8eJcDJNWHY4cFNHMW8
null

1 个答案:

答案 0 :(得分:2)

正如@pinoyyid所评论的那样,在驱动器查询的setFields属性中添加webContentLink解决了这个问题。

  List<String> linkList=new ArrayList<String>();
  fileFlag=0;
  pageToken = null;
  do {
      driveFiles = service.files().list()
              .setQ("mimeType!='application/vnd.google-apps.folder' and '"+childFolder.getId()+"' in parents ")
              .setSpaces("drive")
              .setFields("nextPageToken, files(id, name, webContentLink)")
              .setPageToken(pageToken)
              .execute();
      System.out.println("\n\nFile No. : "+driveFiles.getFiles().size());
      for(com.google.api.services.drive.model.File file: driveFiles.getFiles()) {
         linkList.add(file.getWebContentLink());
         System.out.println(file.getName());
         System.out.println("File Link : "+file.getWebContentLink());
         System.out.println(file.getId());
         System.out.println(file.getWebViewLink());
      }
      pageToken = driveFiles.getNextPageToken();
  } while (pageToken != null);