【问题标题】:Google Drive API v3- create a folder inside a folder in JavaGoogle Drive API v3-在Java文件夹中创建一个文件夹
【发布时间】:2019-05-02 21:00:12
【问题描述】:

我正在尝试用 Java 开发一种方法,可以在 Google Drive 的特定文件夹中创建一个文件夹,但我在 Google 文档 (https://developers.google.com/drive/api/v3/folder) 中发现的只是创建一个文件夹或将文件移动到文件夹。 任何帮助,将不胜感激!

【问题讨论】:

  • Inserting a File in a Folder 下的 API 中,它有这一行 The parents property can be used when creating a folder as well to create a subfolder. 由于您有父文件夹的文件夹 ID,只需像创建普通文件夹一样使用它,但将 fileMetadata.setParents(Collections.singletonList(folderId)); 添加到它与File file = driveService.files().create(fileMetadata) .setFields("id, parents") .execute();

标签: java google-api google-drive-api google-api-java-client


【解决方案1】:

只需使用 API 为您提供的用于创建文件夹和在文件夹中插入文件并将它们组合起来的内容。

来自 API 站点:“parents 属性可用于创建文件夹以及创建子文件夹。”

String folderId = "folderID";
File fileMetadata = new File();
fileMetadata.setName("Invoices");
fileMetadata.setParents(Collections.singletonList(folderId));
fileMetadata.setMimeType("application/vnd.google-apps.folder");

File file = driveService.files().create(fileMetadata)
.setFields("id, parent")
.execute();
System.out.println("Folder ID: " + file.getId());

【讨论】:

  • 非常感谢您的回复,它成功了!在 setFields() 调用中定义字段父级时只是一个简单的错误。字段名称是“parents”(复数),而不是 parent。
【解决方案2】:

您需要先创建一个驱动服务。然后就可以调用 createSubFolder 方法了。

    // Build a new authorized API client service.
    final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    Drive driveService = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .setApplicationName(APPLICATION_NAME)
            .build();

资源链接:https://developers.google.com/drive/api/v3/quickstart/java

在这里, 需要提供父文件夹的 ID。 并且必须给出子文件夹名称。

public String createSubFolder(String parentFolderId, String subFolderName) {
    System.out.println("Sub Folder Name: "+subFolderName);
    File file = null;
    try {
        File fileMetadata = new File();
        fileMetadata.setName(subFolderName);
        fileMetadata.setMimeType("application/vnd.google-apps.folder");
        if (parentFolderId != null) {
            List<String> parents = Arrays.asList(parentFolderId);
            fileMetadata.setParents(parents);
        }
        file = driveService.files().create(fileMetadata).setFields("id, name").execute();
        System.out.println("Folder ID: " + file.getId());
        return file.getId();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

【讨论】:

  • 什么是根文件夹ID?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多