我正在尝试使用mulesoft通过Java代码将文件上传到获取404文件找不到错误的文件夹

时间:2019-06-24 00:51:20

标签: java google-drive-api mule google-api-java-client service-accounts

使用Mulesoft中的服务帐户(该服务帐户具有对该文件夹的完全读写权限),当我在代码中未将文件夹指定为父文件夹时,我可以上传文件,但是当我指定父文件夹字段时,它会用找不到文件错误。

File fileMetadata = new File();
                fileMetadata.setName(filename);
                fileMetadata.setParents(Collections.singletonList(folderId));
                java.io.File filePath = new java.io.File(pathOfFile);
                FileContent mediaContent = new FileContent(extension, filePath);
               try {
                   File result = customGoogleSheetService.getService().files().create(fileMetadata, mediaContent)
                           .setFields("id, parents")
                           .execute();
                   System.out.println("File ID: " + result.getId());
                   //return result;
               }catch (Exception ex) {
                  ex.printStackTrace();
               }


    {
      "code" : 404,
      "errors" : [ {
        "domain" : "global",
        "location" : "fileId",
        "locationType" : "parameter",
        "message" : "File not found: folderId.",
        "reason" : "notFound"
      } ],
      "message" : "File not found: folderId."
    }

1 个答案:

答案 0 :(得分:0)

  

“找不到文件:folderId。”,

完全意味着您提供的文件夹ID对您用于运行应用程序的用户不可用。

您正在使用服务帐户。您需要记住的是,服务帐户不是您。服务帐户是具有自己的Google云端硬盘帐户的虚拟用户。

您需要与服务帐户共享此文件夹。将服务帐户的电子邮件地址放入Google驱动器,并与该目录共享。然后它将有权访问该文件夹。

如果您正在使用gsuite,则需要正确设置Domain wide delication,以使服务帐户授予其对域中文件的访问权限。做一个文件。列表会在设置正确后告诉您,因为那时它可以查看文件。