使用Google Drive API获取文件大小

时间:2017-01-26 09:26:41

标签: java google-drive-api filesize

我正在尝试列出谷歌驱动器中的文件以及我们的应用程序的大小。下面是我试图获得大小的方式

File file = service.files().get(file.getId()).setFields("size").execute();
file.getSize()

我发现通过此次通话获得的尺寸不正确,因为谷歌驱动器只会填充文件的文件大小,而不是谷歌文档,工作表Get size of file created on Google drive using Google drive api in android

我还尝试通过http GET来确定文件的大小 webContentLink&检查Content-Length标题,如下所示

HttpURLConnection conn = null;
        String url = "https://docs.google.com/a/document/d/1Gu7Q2Av2ZokZZyLjqBJHG7idE1dr35VE6rTuSii36_M/edit?usp=drivesdk";
        try {
            URL urlObj = new URL(url);
            conn = (HttpURLConnection) urlObj.openConnection();
            conn.setRequestMethod("HEAD");
            conn.getInputStream();
            System.out.println(conn.getContentLength());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            conn.disconnect();
        }

但在这种情况下,文件大小不正确,因为它非常大

我有什么方法可以确定文件大小吗?

1 个答案:

答案 0 :(得分:0)

找到问题的解决方案。对于上传到Google云端硬盘的文件,可以使用file.getSize()调用确定文件大小。对于谷歌应用程序文件,如doc,电子表格等文件.getSize()将返回null,因为他们不会消费驱动器中的任何空间。所以,作为一个hacky方式,我出口作为pdf&确定大小。以下是

的代码
try {
            Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
                        .setApplicationName("xyz")
                        .build();
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            service.files().export(fileId, "application/pdf")
                .executeMediaAndDownloadTo(outputStream);
            int fileSize = outputStream.toByteArray().length;
        } catch (Exception ex) {

        }