2016-03-29 6 views
0

Ich bekomme ungültige Argument Ausnahme bei der Verwendung von Update MediaContent.Google Drive api Java Update Inhalt einer Datei

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

Ich erhalte diese Ausnahme:

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) 

wenn ich die Aktualisierung nur die Metadaten einer Datei die Methode Update (fileId, fileMetadata), es funktioniert gut. aber als ich versucht habe, mediacontent als dritten Parameter in Update hinzuzufügen, wie in API definiert, bekomme ich die obige Ausnahme.

Wie löst man diesen Fehler? Wie man es in Version3 macht. Ich möchte es nur in Version 3 tun, aber ich konnte den Update-Code in der Laufwerk-API nicht finden.

Antwort

0

Von der Google Drive-REST-API-Dokumentation sample wird Update wie unter

File updatedFile = service.files().update(fileId, file, mediaContent).execute() ausgeführt;

Wobei mediaContent von FileContent Klasse ist.

Ich weiß nicht, was Sie mit typecasting es AbstractInputStreamContent versuchen zu erreichen, aber es gibt keine Notwendigkeit, sich als solche aufgrund FileContent Klasse typisieren ist bereits eine Unterklasse von AbstractInputStreamContent.

Sie können prüfen, ob aus über here

+0

Vielen Dank für die Antwort. Der betreffende Code wurde bearbeitet. Wir haben versucht, was Sie gesagt haben aber immer noch den gleichen Fehler. Bitte überprüfen Sie, wo wir wieder Fehler gemacht haben. –