gpt4 book ai didi

java - 如何在 Google Drive 中的文件夹内创建文件夹?

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:39 25 4
gpt4 key购买 nike

我知道如何使用 Java API v2 在 Google 云端硬盘中创建文件夹: https://developers.google.com/drive/v3/web/folder#creating_a_folder

但是如何在文件夹中创建一个文件夹,将我的文件放入其中?

假设我有一个文件 myfile,我想上传到 Google 云端硬盘中的/myfolder1/myfolder2/目录,我是否应该首先创建 myfolder1,然后获取其 ID,然后创建 myfolder2 并将其父级设置为 myfolder1,然后将 myfile 的父级设置为 myfolder1?有更好的方法吗?

我也添加了代码:

private File insertFile(String filePath) {
// Set file's metadata on the server
File body = new File();
// Title of the file to insert, including the extension.
body.setTitle(getFileName(filePath) + "." + getExtension(filePath));
body.setMimeType(null);
body.setFileExtension(getExtension(filePath));

// folderList is string array of the name of the parent folders for the file
String[] folderList = getFoldersList(filePath);

File folder1 = new File();
folder1.setMimeType("application/vnd.google-apps.folder");
folder1.setTitle(folderList[0]);
try {
folder1 = this.service.files().insert(folder1).execute();
}
catch (IOException e){
e.printStackTrace();
}

File folder2 = new File();
folder2.setMimeType("application/vnd.google-apps.folder");
folder2.setTitle(folderList[1]);
folder2.setParents(Arrays.asList(new ParentReference().setId(folder1.getId())));
try {
folder2 = this.service.files().insert(folder2).execute();
}
catch (IOException e){
e.printStackTrace();
}

body.setParents(Arrays.asList(new ParentReference().setId(folder2.getId())));


// Set file's content.
java.io.File fileContent = new java.io.File(filePath);
// Set file's type
FileContent mediaContent = new FileContent(null, fileContent);

try {
File file = this.service.files().insert(body, mediaContent).execute();
return file;
} catch (IOException e) {
Log.v(DEBUG_TAG, "An error occurred while uploading.");
e.printStackTrace();
return null;
}
}

谢谢

最佳答案

这里有一个小函数可以处理它,您可以使用返回的 ID 作为您正在创建的文件的parentId,并且该文件将在多个文件夹中创建:)

// This function gets an array of Strings representing a file's parent folders
// And returns the most inner parent folder's ID
private String makeParentFolders(String[] parentList) {

File folder = null;
String folderId = null;
for(int i = 0; i < parentList.length; i++) {
folder = new File();
folder.setMimeType(getMimeType("folder"));
folder.setTitle(parentList[i]);
if (i > 0) {
folder.setParents(Arrays.asList(new ParentReference().setId(folderId)));
}
try {
folder = this.service.files().insert(folder).execute();
folderId = folder.getId();
}
catch (IOException e){
e.printStackTrace();
}
}

return folder.getId();
}

如果有人想出更优雅的方式,请在这里发帖。

关于java - 如何在 Google Drive 中的文件夹内创建文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com