首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >驱动V3 API : java.lang.IllegalArgumentException

驱动V3 API : java.lang.IllegalArgumentException
EN

Stack Overflow用户
提问于 2016-04-14 06:55:50
回答 1查看 308关注 0票数 0

我就是这样从文件的输入流创建"AbstractInputStreamContent“的:

代码语言:javascript
复制
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“为:

代码语言:javascript
复制
InputStreamContent fileContent = new InputStreamContent(uploadedFileMimeType, item.openStream());
fileContent.setLength(Long.valueOf(filesData.get(uploadedFileName).get("size")).longValue());

要用我使用的新文件替换旧文件(这两个文件都是.docx格式的):

代码语言:javascript
复制
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();

不管我是使用InputStreamContent还是AbstractInputStreamContent,上传一个新文件都很好。但update提供了两个的"java.lang.IllegalArgumentException“

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2016-04-15 09:21:18

通过将google客户端排除在每个google maven依赖项之外,解决了这个问题。后来添加了google client-1.22.0-来自sonatype repo的快照依赖项。它工作得很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36615819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档