Обновление только метаданных существующего файла Google Диска Используя Java - PullRequest
3 голосов
/ 03 апреля 2019

Я хочу обновлять только метаданные (например, описание или имя файла) существующего файла на диске Google. Существует несколько документов для этого с использованием javascript Документация по обновлению Google Диска .Но нет документации по Java.Также я нашел код, чтобы сделать это

 private static File updateFile(Drive service, String fileId, String newTitle,
      String newDescription, String newMimeType, String newFilename, boolean newRevision) {
    try {
      // First retrieve the file from the API.
      File file = service.files().get(fileId).execute();

      // File's new metadata.
      file.setTitle(newTitle);
      file.setDescription(newDescription);
      file.setMimeType(newMimeType);

      // File's new content.
      java.io.File fileContent = new java.io.File(newFilename);
      FileContent mediaContent = new FileContent(newMimeType, fileContent);

      // Send the request to the API.
      File updatedFile = service.files().update(fileId, file, mediaContent).execute();

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

  // ...
}

Но в этом он также обновляет контент (что я не хочу делать).Как я могу достичь этого?

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

После дополнительных исследований я нашел решение,

   File file =new File();
     file.setName("new name");
     service.files().update(fileid, file).execute();

Этот код обновит имя файла.

1 голос
/ 03 апреля 2019

В соответствии с документацией для обновления метаданных, у вас есть отдельный URL,

Загрузить URI, для запросов на загрузку мультимедиа:

PUT https://www.googleapis.com/upload/drive/v2/files/fileId

URI метаданных, для запросов только на метаданные:

PUT https://www.googleapis.com/drive/v2/files/fileId

Более того,

https://developers.google.com/drive/api/v2/reference/files/update#try-it

И это не имеет ничего общего с Java.Нажмите правильный URL, приятель.

И у них есть пример java для обновления метаданных (только),

https://developers.google.com/drive/api/v2/reference/files/patch

код:

import com.google.api.services.drive.Drive;
import com.google.api.services.drive.Drive.Files;
import com.google.api.services.drive.model.File;

import java.io.IOException;
// ...

public class MyClass {

  // ...

  /**
   * Rename a file.
   *
   * @param service Drive API service instance.
   * @param fileId ID of the file to rename.
   * @param newTitle New title for the file.
   * @return Updated file metadata if successful, {@code null} otherwise.
   */
  private static File renameFile(Drive service, String fileId, String newTitle) {
    try {
      File file = new File();
      file.setTitle(newTitle);

      // Rename the file.
      Files.Patch patchRequest = service.files().patch(fileId, file);
      patchRequest.setFields("title");

      File updatedFile = patchRequest.execute();
      return updatedFile;
    } catch (IOException e) {
      System.out.println("An error occurred: " + e);
      return null;
    }
  }

  // ...
}
...