직접 및 재개 가능한 미디어 업로드

이 문서에서는 직접 및 재개 가능한 미디어 업로드를 사용하는 방법을 설명합니다. API 클라이언트 라이브러리를 제공합니다.

재개 가능한 미디어 업로드

대용량 미디어 파일을 서버에 업로드할 때 재개 가능한 미디어 업로드를 사용하면 청크별로 파일 청크를 보냅니다. Google API 생성 라이브러리에는 재개 가능한 미디어 업로드와 상호작용하기 위한 편리한 메서드를 제공합니다.

재개 가능한 미디어 업로드 프로토콜은 재개 가능한 미디어 업로드와 유사합니다. Google Drive API 문서에 설명된 대로 프로토콜을 사용해야 합니다.

프로토콜 설계

다음 시퀀스 다이어그램은 재개 가능한 미디어 업로드 프로토콜의 작동 방식을 보여줍니다.
클라이언트와 서버 간에 요청과 응답이 이동하는 방식을 보여주는 시퀀스 다이어그램

구현 세부정보

주요 관심 클래스는 MediaHttpUploader MediaHttpProgressListener가 있습니다.

서비스별로 생성된 라이브러리의 메서드에 mediaUpload이 포함된 경우 매개변수(검색 문서)가 포함되어 있습니다. 그러면 이러한 메서드를 위한 편의 메서드가 생성되어 InputStreamContent 를 매개변수로 사용합니다. (Google API를 통한 미디어 업로드 사용에 대한 자세한 내용은 Discovery Service의 경우 미디어 업로드)

예: Drive APIinsert 메서드 mediaUpload를 지원하며 다음 코드를 사용하여 파일을 업로드할 수 있습니다.

class CustomProgressListener implements MediaHttpUploaderProgressListener {
  public void progressChanged(MediaHttpUploader uploader) throws IOException {
    switch (uploader.getUploadState()) {
      case INITIATION_STARTED:
        System.out.println("Initiation has started!");
        break;
      case INITIATION_COMPLETE:
        System.out.println("Initiation is complete!");
        break;
      case MEDIA_IN_PROGRESS:
        System.out.println(uploader.getProgress());
        break;
      case MEDIA_COMPLETE:
        System.out.println("Upload is complete!");
    }
  }
}

File mediaFile = new File("/tmp/driveFile.jpg");
InputStreamContent mediaContent =
    new InputStreamContent("image/jpeg",
        new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());

Drive.Files.Insert request = drive.files().insert(fileMetadata, mediaContent);
request.getMediaHttpUploader().setProgressListener(new CustomProgressListener());
request.execute();

또한 서비스별 생성됩니다 예를 들면 다음과 같습니다.

File mediaFile = new File("/tmp/Test.jpg");
InputStreamContent mediaContent =
    new InputStreamContent("image/jpeg",
        new BufferedInputStream(new FileInputStream(mediaFile)));
mediaContent.setLength(mediaFile.length());

MediaHttpUploader uploader = new MediaHttpUploader(mediaContent, transport, httpRequestInitializer); uploader.setProgressListener(new CustomProgressListener()); HttpResponse response = uploader.upload(requestUrl); if (!response.isSuccessStatusCode()) { throw GoogleJsonResponseException(jsonFactory, response); }

직접 미디어 업로드

재개 가능한 미디어 업로드는 기본적으로 사용 설정되어 있지만 사용 중지하고 대신 미디어 직접 업로드를 사용합니다(예: 작은 파일을 업로드하는 경우). 직접 미디어 업로드는 1.9.0-beta에서 도입되었습니다. Google API 클라이언트 라이브러리 버전입니다.

직접 미디어 업로드는 여러 요청으로 파일을 업로드하는 재개 가능한 미디어 업로드 프로토콜입니다. 직접 업로드를 수행하면 HTTP 요청 수는 감소하지만 장애 (예: 연결 장애)가 발생할 가능성을 합니다.

직접 미디어 업로드의 사용은 위에서 설명한 것과 동일합니다. 재개 가능한 미디어 업로드 및 MediaHttpUploader를 알려주는 다음 호출 직접 업로드만 할 수 있습니다.

mediaHttpUploader.setDirectUploadEnabled(true);