2016-03-29 80 views
0

我在使用更新mediaContent時收到非法參數異常。谷歌驅動器api java更新文件的內容

private static File updateFile(Drive service, String fileId, 
     String newMimeType, String newFilename, boolean newRevision) { 
     try { 
     // First retrieve the file from the API. 
     File file = service.files().get(fileId).execute(); 


     file.setMimeType(newMimeType); 

     // File's new content. 
     java.io.File fileContent = new java.io.File(newFilename); 
     FileContent mediaContent = new FileContent(newMimeType, fileContent); 

     // Send the request to the API. 
     File updatedFile = service.files().update(fileId, file, mediaContent).execute(); 

     return updatedFile; 
     } catch (IOException e) { 
     System.out.println("An error occurred: " + e); 
     return null; 
     } 
    } 

我得到這個異常:

java.lang.IllegalArgumentException 
at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:111) 
at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:37) 
at com.google.api.client.googleapis.media.MediaHttpUploader.setInitiationRequestMethod(MediaHttpUploader.java:872) 
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.initializeMediaUpload(AbstractGoogleClientRequest.java:237) 
at com.google.api.services.drive.Drive$Files$Update.<init>(Drive.java:3163) 
at com.google.api.services.drive.Drive$Files.update(Drive.java:3113) 
at sai.sai.vasa.main(vasa.java:247) 

當我更新文件的方法是更新(FILEID,fileMetadata)的唯一元數據,這是工作的罰款。但是當我嘗試添加mediacontent作爲更新中的第三個參數在api中定義時,我得到了上述異常。

如何解決這個錯誤? 如何在V3中做到這一點。我只想在版本3中使用它,但我無法在驅動器API中找到更新代碼。

回答

0

從谷歌驅動器REST API文檔sample,更新像下面

File updatedFile = service.files().update(fileId, file, mediaContent).execute()執行;

其中mediaContentFileContent類。

我不知道你在試圖完成與類型爲AbstractInputStreamContent,但沒有必要爲此類型轉換,因爲FileContent類已經是AbstractInputStreamContent的子類。

您可以檢查出here

+0

感謝您的回覆。 編輯有問題的代碼。我們嘗試了你說的 ,但仍然是同樣的錯誤。請你可以檢查我們再犯的錯誤。 –