2017-01-26 13 views
1

я пытаюсь список файлов на Google Диске, а также их размеры для моего приложения & ниже является, как я пытался получать размерПолучить размер файлов с помощью Google Drive API

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

я узнал, что размер, полученный от этого вызова не так, как Google диск только заполнит размер файла для файлов, кроме Google Docs, шпунтовых 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(); 
     } 

Но в этом случае, размер файла не является правильным, как это происходит из очень большого

Есть ли способ, я могу определить размер файла?

+0

Есть ли какой-либо API-интерфейс google, который возвращает, сколько места было использовано? –

ответ

0

Нашли решение проблемы. Для файлов, загруженных на диск Google, размер файла можно определить с помощью вызова file.getSize(). Файлы приложений Google, такие как doc, электронная таблица и т. Д. File.getSize() возвращают null, поскольку они не занимают какое-либо место на диске. Так что, как язвительный способ, я экспортирую как 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) { 

     } 
+0

Мне интересно, каково значение размера экспорта файла в формате PDF? – pinoyyid

+0

Мне нужно было отобразить размер файла в списке файлов дисков Google, поэтому экспорт его в формате pdf и отображение размера - это то, что я установил для –

+0

. Хм, ОК, если вы понимаете, что это не размер, а скорее один из многие размеры в зависимости от формата экспорта. – pinoyyid