问题描述
我想从 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)