使用 Google 驱动器 API 获取文件大小
Get size of files using Google drive API
我正在尝试列出来自 google 驱动器的文件以及它们为我的应用程序提供的大小,下面是我尝试获取大小的方法
File file = service.files().get(file.getId()).setFields("size").execute();
file.getSize()
我开始知道从这个调用中获得的大小不正确,因为 google 驱动器只填充 google 文档以外的文件的文件大小,sheet Get size of file created on Google drive using Google drive api in android
我还尝试通过 http GET 来确定文件的大小
webContentLink 并检查 Content-Length header 如下所示
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();
}
但在这种情况下,文件大小不正确,因为它非常大
有什么方法可以确定文件大小吗?
找到问题的解决方法。对于上传到 google 驱动器的文件,可以使用 file.getSize() 调用确定文件大小。对于 Google 应用程序文件,例如文档、电子表格等 file.getSize() 将 return 为空,因为它们不会在驱动器中使用任何 space。因此,作为一种 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) {
}
我正在尝试列出来自 google 驱动器的文件以及它们为我的应用程序提供的大小,下面是我尝试获取大小的方法
File file = service.files().get(file.getId()).setFields("size").execute();
file.getSize()
我开始知道从这个调用中获得的大小不正确,因为 google 驱动器只填充 google 文档以外的文件的文件大小,sheet Get size of file created on Google drive using Google drive api in android
我还尝试通过 http GET 来确定文件的大小 webContentLink 并检查 Content-Length header 如下所示
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();
}
但在这种情况下,文件大小不正确,因为它非常大
有什么方法可以确定文件大小吗?
找到问题的解决方法。对于上传到 google 驱动器的文件,可以使用 file.getSize() 调用确定文件大小。对于 Google 应用程序文件,例如文档、电子表格等 file.getSize() 将 return 为空,因为它们不会在驱动器中使用任何 space。因此,作为一种 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) {
}