6

当我尝试通过 Google Drive 上的 getFileSize() 获取文件大小时,结果为空。我知道当文件未存储在驱动器上但文件存储在驱动器上时结果可能为空(downloadUrl 不同于空)。

    Drive lService = new Builder(new NetHttpTransport(), new JacksonFactory(), lCredential).setApplicationName("TODO").build();
    FileList files = lService.files().list().execute();

    List<FileDTO> lResult = new ArrayList<FileDTO>();
    for (File lFile : files.getItems()) {
        DriveFileDTO lFileDTO = new DriveFileDTO();
        lFileDTO.setName(lFile.getTitle());
        lFileDTO.setMimeType(lFile.getMimeType());
        lFileDTO.setSize(lFile.getFileSize()); // <-- FileSize = NULL

        lFileDTO.setUrl(lFile.getDownloadUrl());

        lResult.add(lFileDTO);
    }

你能帮助我吗?

谢谢!前!

4

3 回答 3

1

来自 Google Drive 的文件列表的默认请求将包括文件大小,但仅适用于文件大小不是隐式 null 的文件。例如,文件夹和 Google 电子表格(只是链接)将为空。

这可以通过 Drive API exlporer 进行验证。只需在字段编辑器中请求文件大小和 mimtype。对于所提到的文件类型,即使请求了文件大小,键值对也不会包含在响应中——但对于其他类型,将返回。

于 2014-11-12T10:14:21.747 回答
0

请尝试使用 OAuth 2.0 Playground 重现该问题:

https://developers.google.com/oauthplayground

通过使用 OAuth Playground,我们可以发送原始请求并检查 API 中是否存在问题。我尝试自己复制它并且它工作正常。

于 2012-10-05T23:49:03.483 回答
-1

调用getHeaders().GetContentLength()HttpResponse 类(代码假定myurl是您的 url):

HttpResponse resp = service.getRequestFactory().buildGetRequest(new GenericUrl(myurl)).execute();
Log.v("abc","file size is : " + resp.getHeaders().getContentLength());
于 2013-05-29T17:36:16.077 回答