如何从 MediaHttpDownloader 获取内容长度(又名文件大小)?驱动 file.getSize() 总是 return 空

How to get the content length(aka file size) from the MediaHttpDownloader? drive file.getSize() always return null

我想从 Gdrive 下载文件。所以我正在使用驱动器 API v3 (java).

这里是代码片段。

Drive.Files.Get request = driveService.files().get(fileId);
// Get the file metadata
File downloadFile = request.execute();
Long fileSize = downloadFile.getSize(); // always returns null.

OutputStream out = new FileOutputStream(fileName);

request.getMediaHttpDownloader().setProgressListener(
                            new DriveDownloadProgressListener(messageQueue));
request.executeMediaAndDownloadTo(out);

此处 downloadFile.getSize() 始终 returns 为空。 有没有办法从 MediaHttpDownloader 获取文件大小?

我必须自己在请求中添加必填字段。

像这样


Drive.Files.Get request = driveService.files().get(fileId).setFields("size");
File file = request.execute(); // contains only size field.Other fields will be empty

然后执行得到预期的响应(只发送自己设置的字段)

例如,如果您需要文件的名称和大小。

Drive.Files.Get request = driveService.files().get(fileId).setFields("name,size"); // name and size
File file = request.execute(); // contains only name and size field.Other fields will be empty(respective get methods will return null only)