google drive api java更新文件的内容

时间:2016-03-29 03:13:03

标签: java api google-drive-api insert-update drive

使用update mediaContent时,我收到非法参数异常。

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)时,它工作正常。但是当我尝试在api中定义的更新中添加mediacontent作为第三个参数时,我得到了上述异常。

如何解决此错误? 如何在版本3中执行此操作。我想仅在版本3中执行此操作,但我在驱动器API中找不到更新代码。

1 个答案:

答案 0 :(得分:0)

在Google Drive Rest API文档sample中,更新执行如下

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

mediaContent属于FileContent类。

由于AbstractInputStreamContent类已经是FileContent的子类,因此我不知道你要将它强制转换为AbstractInputStreamContent,但是没有必要对它进行类型转换。

您可以通过here

查看