2016-04-14 16 views
0

これは私がファイルの入力ストリームから "AbstractInputStreamContent" を作成する方法です:としてドライブV3 APIは:java.lang.IllegalArgumentExceptionが

final Long length = Long.valueOf(filesData.get(uploadedFileName).get("size")).longValue(); 
    final InputStream fileStream = item.openStream(); //FileItemStream item 
    AbstractInputStreamContent fileContent = new AbstractInputStreamContent(uploadedFileMimeType) { 
     @Override 
     public boolean retrySupported() { 
      return false; 
     } 
     @Override 
     public long getLength() throws IOException { 
      return length; 
     } 
     @Override 
     public InputStream getInputStream() throws IOException { 
      return fileStream; 
     } 
    }; 

そして "InputStreamContent":

InputStreamContent fileContent = new InputStreamContent(uploadedFileMimeType, item.openStream()); 
fileContent.setLength(Long.valueOf(filesData.get(uploadedFileName).get("size")).longValue()); 

と古いファイルを置き換えるには私が使用して新しいファイル(両方のファイルが.docxの形式である):

Drive.Files.Update update = driveService.files().update(fileIdOfFileToReplace,fileMeta,fileContent); 
     update.set("uploadType", "resumable"); 
     update.getMediaHttpUploader().setDirectUploadEnabled(false); 
     update.getMediaHttpUploader().setChunkSize(MediaHttpUploader.DEFAULT_CHUNK_SIZE); 
     File updatedFile = update.execute(); 

新しいファイルをアップロードするには、罰金WHEの作品私はInputStreamContentまたはAbstractInputStreamContentを使用します。 しかし、更新

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 com.util.DocumentsUtil.updateFile(DocumentsUtil.java:22) 
    at com.controllers.collab.documents.Documents.fileUpload(Documents.java:165) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:44) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 

答えて

0

の両方で "java.lang.IllegalArgumentExceptionが" を与えるには、それぞれのGoogleのAPI Mavenの依存関係からグーグル-APIクライアントの除外を与えることによってそれを解決しました。その後、sonatype repoからgoogle-api-client-1.22.0-SNAPSHOT依存関係が追加されました。それは正常に動作します

関連する問題