如何从 MediaHttpDownloader 获取内容长度又名文件大小? drive file.getSize() 总是返回 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() 总是返回 null。 有没有办法从 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)