我在谷歌硬盘中创建了一个服务帐户,用于从服务器上传谷歌驱动器中的文件,然后再下载这些文件。但是当我尝试获取文件夹的文件列表并获取这些文件的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
答案 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);