Google云端硬盘:文件大小为空

时间:2012-10-05 13:24:56

标签: google-drive-api

当我尝试通过Google云端硬盘上的getFileSize()获取文件大小时,结果为空。我知道当文件没有存储在Drive但文件存储在Drive上时,结果可以为null(downloadUrl与null不同)。

    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);
    }

你能帮助我吗?

谢谢! 前!

3 个答案:

答案 0 :(得分:1)

Google云端硬盘中文件列表的默认请求将包含文件大小,但仅适用于文件大小不隐式为空的文件。例如,文件夹和Google电子表格(只是链接)将为空。

可以使用Drive API exlporer验证。只需在字段编辑器中请求filesize和mimtype。即使请求了文件大小,键值对也不会包含在所提到的文件类型的响应中 - 但是会为其他类型返回。

答案 1 :(得分:0)

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

https://developers.google.com/oauthplayground

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

答案 2 :(得分:-1)

在HttpResponse类上调用getHeaders().GetContentLength()(代码假定myurl是您的网址):

HttpResponse resp = service.getRequestFactory().buildGetRequest(new GenericUrl(myurl)).execute();
Log.v("abc","file size is : " + resp.getHeaders().getContentLength());