2

以下是使用 Gdrive V2 sdk 将文件上传到特定文件夹的方法。1) 将文件插入根文件夹 (Drive.Files.insert(File,AbstractInputStream) 2) 删除新上传文件的根父引用 3) 添加特定目标文件夹作为文件的新父引用。

以上工作。但是,如果网络速度很慢,我们会看到文件在根文件夹中停留了很长一段时间,然后才会移动到特定的目标文件夹。我们怎样才能避免这种情况?我们可以批处理所有上述三个操作吗?但是 AFAIK,批处理支持特定类型的操作,例如..我们只能批处理所有文件操作或父操作或修订操作。我们可以批处理属于不同类型的操作,例如(Files.insert() 和 Parent.delete())吗?

输入将不胜感激。

谢谢!!

4

2 回答 2

5

您可以通过在元数据中设置父母字段直接在指定文件夹中创建文件。

{
  "title" : "test.jpg",
  "mimeType" : "image/jpeg",
  "parents": [{
    "kind": "drive#file",
    "id": "<folderId>"
  }]
}

这就是我在 python 中所做的,但我相信在 java 中有相关的。

于 2012-07-06T01:16:51.270 回答
1

正如 eric.f 在他的回答中提到的,您需要为文件设置级。

来自https://developers.google.com/drive/v2/reference/files/insert

import com.google.api.client.http.FileContent;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.model.File;

import java.io.IOException;
import java.util.Arrays;
// ...

public class MyClass {

  // ...

  /**
   * Insert new file.
   *
   * @param service Drive API service instance.
   * @param title Title of the file to insert, including the extension.
   * @param description Description of the file to insert.
   * @param parentId Optional parent folder's ID.
   * @param mimeType MIME type of the file to insert.
   * @param filename Filename of the file to insert.
   * @return Inserted file metadata if successful, {@code null} otherwise.
   */
  private static File insertFile(Drive service, String title, String description,
      String parentId, String mimeType, String filename) {
    // File's metadata.
    File body = new File();
    body.setTitle(title);
    body.setDescription(description);
    body.setMimeType(mimeType);

    // Set the parent folder.
    if (parentId != null && parentId.length() > 0) {
      body.setParents(
          Arrays.asList(new ParentReference().setId(parentId)));
    }

    // File's content.
    java.io.File fileContent = new java.io.File(filename);
    FileContent mediaContent = new FileContent(mimeType, fileContent);
    try {
      File file = service.files().insert(body, mediaContent).execute();

      // Uncomment the following line to print the File ID.
      // System.out.println("File ID: %s" + file.getId());

      return file;
    } catch (IOException e) {
      System.out.println("An error occured: " + e);
      return null;
    }
  }

  // ...
}
于 2013-08-17T09:13:17.793 回答