이 문서에서는 직접 및 재개 가능한 미디어 업로드를 사용하는 방법을 설명합니다. API 클라이언트 라이브러리를 제공합니다.
재개 가능한 미디어 업로드
대용량 미디어 파일을 서버에 업로드할 때 재개 가능한 미디어 업로드를 사용하면 청크별로 파일 청크를 보냅니다. Google API 생성 라이브러리에는 재개 가능한 미디어 업로드와 상호작용하기 위한 편리한 메서드를 제공합니다.
재개 가능한 미디어 업로드 프로토콜은 재개 가능한 미디어 업로드와 유사합니다. Google Drive API 문서에 설명된 대로 프로토콜을 사용해야 합니다.
프로토콜 설계
다음 시퀀스 다이어그램은 재개 가능한 미디어 업로드 프로토콜의 작동 방식을 보여줍니다.
구현 세부정보
주요 관심 클래스는 MediaHttpUploader MediaHttpProgressListener가 있습니다.
서비스별로 생성된 라이브러리의 메서드에 mediaUpload
이 포함된 경우
매개변수(검색 문서)가 포함되어 있습니다.
그러면 이러한 메서드를 위한 편의 메서드가 생성되어
InputStreamContent
를 매개변수로 사용합니다. (Google API를 통한 미디어 업로드 사용에 대한 자세한 내용은
Discovery Service의 경우
미디어 업로드)
예: Drive API의 insert
메서드
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);