【问题标题】:I am trying upload a file using mulesoft via Java code to a folder getting 404 file not found error我正在尝试通过 Java 代码使用 mulesoft 将文件上传到获取 404 file not found 错误的文件夹
【发布时间】:2019-11-05 19:08:56
【问题描述】:

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

【问题讨论】:

  • 您从哪里获得文件夹 ID?你有没有先做一个 files.list 来确保目录存在?
  • 我正在从该文件夹示例的浏览器链接中获取 folderId:drive.google.com/drive/folders/folderId,要执行 files.list,您必须提供一个再次显示 fileNotfound 错误的 folderId,如果我只是执行 files .list 它显示帐户个人驱动器中的文件。
  • 如果要使用driveService,为什么要使用customGoogleSheetService?
  • 名称错误,我为其他东西创建了一个 googleSheetService,更改了里面的代码,但没有更改 java 文件的名称

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


【解决方案1】:

"找不到文件:folderId。",

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

您正在使用服务帐户。您需要记住的是服务帐户不是您。服务帐户是拥有自己的 Google Drive 帐户的虚拟用户。

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

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

【讨论】:

  • 我使用的服务帐户是该共享驱动器及其文件夹的“管理员”
  • 它没有权限查看它们。当你知道你已经正确设置了域范围的委派时,做一个 file.list 看看它可以访问什么。
  • 好的,我试试这个,然后告诉你进展如何
  • 好的,我做了一个简单的 Files.list.execute();没有 setQ,我得到了一个文件作为回报,即“入门”,这是创建新驱动器帐户时每个人都获得的默认文件,我尝试上传的文件夹位于使用 g-suite 的共享驱动器中,我无法列出文件在我尝试上传的文件夹中,如何正确设置服务帐户的权限?
  • 如果服务帐户有权访问这些文件,那么它们就会显示出来。如果您没有看到 Gsuite 中的代表团存在问题,建议您再次检查。
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多