我正在尝试使用 mulesoft 通过 Java 代码将文件上传到文件夹,但出现 404 文件未找到错误

I am trying upload a file using mulesoft via Java code to a folder getting 404 file not found error

在 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."
    }

"File not found: folderId.",

确切地说,您提供的文件夹 ID 对您用于 运行 您的应用程序的用户不可用。

您正在使用服务帐户。您需要记住的是服务帐户不是您。服务帐户是一个虚拟用户,拥有自己的 google 驱动器帐户。

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

如果您使用的是 gsuite,则需要为服务帐户正确设置 Domain wide delication 以授予其访问域中文件的权限。执行 file.list 会在您正确设置后告诉您,因为届时它将能够看到文件。