2012-10-05 54 views
6

當我嘗試通過Google Drive上的getFileSize()獲取文件大小時,結果爲空。我知道,如果文件未存儲在Drive上,但文件存儲在Drive上(downloadUrl不同於null),則結果可能爲空。Google Drive:文件大小爲空

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

你能幫幫我嗎?

謝謝! aGO!

回答

0

上的HttpResponse級呼叫getHeaders().GetContentLength()(代碼假設myurl是你的網址):

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

這個答案是不正確的。該問題要求file.size。該請求是針對文件列表的,因此文件大小很多,而不僅僅是一個。如果這返回一個值,它不是任何文件的大小,而是返回列表的大小。 – NameSpace

0

請儘量使用OAuth 2.0遊樂場再現問題:

https://developers.google.com/oauthplayground

通過使用OAuth園地,我們可以發送原始請求,並檢查是否有API中的一個問題。 我試着自己複製它,它工作正常。

+0

謝謝Cloudio的幫助。如果我使用OAuth操場,則可以看到文件大小。如果我通過Google Drive API執行相同操作,則大小爲NULL – aGO

+0

您是否使用最新版本的Java客戶端庫?這個問題是否只發生在一個文件中?如果是這樣,你能分享一個受影響的文件嗎?我仍然無法用我的測試帳戶重現它。 –

+0

經過OAuth操場測試後,它正在工作...我無法解釋它。現在我正在使用最新的Java客戶端庫。如果我將重現這個問題,我會寫出來。非常感謝! – aGO

1

從谷歌雲端硬盤中的文件列表中的默認請求將包括文件大小,但僅限於文件所在的文件大小不隱式爲空。例如,文件夾和Google電子表格(僅爲鏈接)將爲空。

這可以通過Drive API exlporer進行驗證。只需在字段編輯器中請求文件大小和mimtype。即使文件大小已被請求,鍵值對也不會包含在所提及的文件類型的響應中 - 但是會爲其他類型返回。

相關問題