Google Drive API는 다음 표에 나열된 여러 유형의 다운로드 및 내보내기 작업을 지원합니다.
| 다운로드 작업 |
|
||||
| 내보내기 작업 |
|
Drive API에서 blob 파일은 Google Workspace 문서와 달리 Google Drive에 저장된 원시 바이너리 파일 (예: 이미지, 동영상, PDF)을 의미합니다. JavaScript의 Blob 객체를 참조하지 않습니다. blob 및 Google Workspace 파일을 비롯해 여기에 언급된 파일 형식에 대한 자세한 설명은 파일 형식을 참고하세요.
파일 콘텐츠를 다운로드하거나 내보내기 전에 사용자가 files 리소스의 capabilities.canDownload 필드를 사용하여 파일을 다운로드할 수 있는지 확인합니다.
이 문서의 나머지 부분에서는 이러한 유형의 다운로드 및 내보내기 작업을 실행하는 방법에 관한 자세한 안내를 제공합니다.
blob 파일 콘텐츠 다운로드
Drive에 저장된 blob 파일을 다운로드하려면 다운로드할 파일의 ID와 alt system 매개변수를 사용하여 files.get 메서드를 사용합니다.
alt=media 매개변수는 콘텐츠 다운로드가 대체 응답 형식으로 요청되고 있음을 서버에 알립니다.
alt 시스템 매개변수는 모든 Google REST API에서 사용할 수 있습니다. Drive API 클라이언트 라이브러리를 사용하는 경우 클라이언트 라이브러리 메서드가 기본 HTTP 요청에 alt=media 매개변수를 추가하므로 이 매개변수를 명시적으로 설정할 필요가 없습니다.
다음 코드 샘플은 files.get 메서드를 사용하여 파일을 다운로드하는 방법을 보여줍니다.
Apps Script
/**
* Downloads a file from Drive.
* @param {string} fileId The ID of the file to download.
* @return {Blob} The file content as a Blob.
*/
function downloadFile(fileId) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
자바
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
다음을 바꿉니다.
- FILE_ID: 다운로드할 파일의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
- FILE_NAME: 출력 파일의 이름입니다.
앱에서 시작된 파일 다운로드는 파일 콘텐츠에 대한 읽기 액세스를 허용하는 범위로 승인되어야 합니다. 예를 들어 drive.readonly.metadata 범위를 사용하는 앱은 파일 콘텐츠를 다운로드할 권한이 없습니다.
클라이언트 라이브러리 코드 샘플은 사용자가 모든 Drive 파일을 보고 관리할 수 있는 제한된 drive 파일 범위를 사용합니다. Drive 범위에 대해 자세히 알아보려면 Google Drive API 범위 선택하기를 참고하세요.
owner 권한 (내 드라이브 파일의 경우) 또는 organizer 권한 (공유 드라이브 파일의 경우)이 있는 사용자는 DownloadRestrictionsMetadata 객체를 통해 다운로드를 제한할 수 있습니다. 자세한 내용은 다른 사용자가 파일을 다운로드, 인쇄, 복사하지 못하도록 차단하기를 참고하세요.
악용으로 식별된 파일(예: 유해한 소프트웨어)은 파일 소유자만 다운로드할 수 있습니다.
또한 acknowledgeAbuse 쿼리 매개변수를 true로 설정하여 사용자가 원치 않는 소프트웨어 또는 기타 악성 파일을 다운로드할 위험을 인지했음을 나타내야 합니다. 애플리케이션은 이 쿼리 매개변수를 사용하기 전에 사용자에게 대화형으로 경고해야 합니다.
메모리에서 파일 데이터 액세스
애플리케이션이 로컬 디스크에 저장하는 대신 메모리에서 직접 파일 데이터 (예: 바이트 버퍼)에 액세스해야 하는 경우 클라이언트 라이브러리 요청을 조정하거나 반환된 스트림을 처리하면 됩니다.
Node.js: 기본적으로 Node.js 클라이언트 라이브러리는 파일 콘텐츠를
Readable스트림으로 반환합니다. 파일을 로컬 디스크에 저장하려면 다음 단계를 따르세요.const fs = require('fs'); const dest = fs.createWriteStream('/path/to/dest/file.ext'); const response = await service.files.get( { fileId, alt: 'media' }, { responseType: 'stream' } ); response.data .on('end', () => { console.log('Download complete.'); }) .on('error', (err) => { console.error('Error downloading file.', err); }) .pipe(dest);또는 스트림 대신 메모리에서 직접 데이터를
ArrayBuffer로 반환하려면 요청 옵션에서responseType매개변수를 설정하세요.const file = await service.files.get({ fileId, alt: 'media', }, { responseType: 'arraybuffer' }); // Convert the ArrayBuffer to a Node.js Buffer object. const buffer = Buffer.from(file.data);Python: 블롭 파일을 다운로드하는 Python 코드 샘플은 이미 다운로드 청크를 메모리 내
io.BytesIO()객체에 작성합니다. 원시 바이트에 액세스하려면file.getvalue()를 호출하세요.Java: blob 파일을 다운로드하는 Java 코드 샘플은
java.io.ByteArrayOutputStream를 사용하여 다운로드된 바이트를 메모리에 캡처합니다.outputStream.toByteArray()를 사용하여 원시 바이트 배열에 액세스합니다..NET: 블롭 파일을 다운로드하는 C# 코드 샘플은
System.IO.MemoryStream를 사용합니다.stream.ToArray()을 사용하여 기본 바이트 배열에 액세스합니다.Apps Script: 블롭 파일을 다운로드하는 Apps Script 코드 샘플은
response.getBlob()메서드를 사용하여Blob객체를 반환합니다.getBytes()메서드를 사용하여 이를 바이트 배열로 변환합니다.
부분 다운로드
부분 다운로드는 파일의 지정된 부분만 다운로드하는 것입니다. Range 헤더와 함께 바이트 범위를 사용하여 다운로드할 파일 부분을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
Range: bytes=500-999
이전 버전의 blob 파일 콘텐츠 다운로드
이전 버전의 blob 파일 콘텐츠를 다운로드하려면 다운로드할 파일의 ID, 수정사항의 ID, alt 시스템 매개변수와 함께 revisions.get 메서드를 사용합니다.
alt=media 매개변수는 콘텐츠 다운로드가 대체 응답 형식으로 요청되고 있음을 서버에 알립니다. files.get와 마찬가지로 revisions.get 메서드도 acknowledgeAbuse 쿼리 매개변수와 Range 헤더를 허용합니다.
'영구 보관'으로 표시된 blob 파일 콘텐츠 수정사항만 다운로드할 수 있습니다. 버전을 다운로드하려면 먼저 '영구 보관'으로 설정하세요. 자세한 내용은 자동 삭제에서 제외할 버전 지정을 참고하세요.
버전 다운로드에 관한 자세한 내용은 장기 실행 작업 관리를 참고하세요.
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
다음을 바꿉니다.
- FILE_ID: 다운로드할 파일의 ID입니다.
- REVISION_ID: 다운로드할 버전의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
- FILE_NAME: 출력 파일의 이름입니다.
브라우저에서 blob 파일 콘텐츠 다운로드
API를 통하지 않고 브라우저 내에서 Drive에 저장된 blob 파일의 콘텐츠를 다운로드하려면 files 리소스의 webContentLink 필드를 사용하세요. 사용자에게 파일 다운로드 액세스 권한이 있는 경우 파일 및 콘텐츠를 다운로드할 수 있는 링크가 반환됩니다. 사용자를 이 URL로 리디렉션하거나 클릭 가능한 링크로 제공할 수 있습니다.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
다음을 바꿉니다.
- FILE_ID: 다운로드 링크를 가져올 파일의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
장기 실행 작업을 사용하여 blob 파일 콘텐츠 다운로드
장기 실행 작업 (LRO)을 사용하여 blob 파일의 콘텐츠를 다운로드하려면 다운로드할 파일의 ID와 함께 files.download 메서드를 사용합니다. 원하는 경우 버전의 ID를 설정할 수 있습니다.
Google Vids 파일을 다운로드하는 유일한 방법입니다. Google Vids 파일을 내보내려고 하면 fileNotExportable 오류가 표시됩니다.
자세한 내용은 장기 실행 작업 관리를 참고하세요.
curl
다음 curl 명령어는 LRO를 시작하고 JSON 응답을 반환합니다. 파일을 다운로드하거나 이 LRO를 폴링하려면 반환된 ID를 사용하여 콘텐츠 URL을 가져오는 다른 요청을 해야 합니다. 그런 다음 해당 URL에 최종 curl 요청을 하여 파일을 다운로드할 수 있습니다. 자세한 내용은 장기 실행 작업 관리를 참고하세요.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=video/mp4" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
다음을 바꿉니다.
- FILE_ID: 다운로드할 파일의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
Google Workspace 문서 콘텐츠 내보내기
Google Workspace 문서 바이트 콘텐츠를 내보내려면 내보낼 파일의 ID와 올바른 MIME 유형을 사용하여 files.export 메서드를 사용합니다. 내보낸 콘텐츠는 10MB로 제한됩니다.
다음 코드 샘플은 files.export 메서드를 사용하여 Google Workspace 문서를 PDF 형식으로 내보내는 방법을 보여줍니다.
Apps Script
/**
* Exports a Google Workspace document.
* @param {string} fileId The ID of the file to export.
* @param {string} mimeType The MIME type to export to.
* @return {Blob} The exported content as a Blob.
*/
function exportPdf(fileId, mimeType) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=' + encodeURIComponent(mimeType);
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
자바
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME.pdf"
다음을 바꿉니다.
- FILE_ID: 다운로드할 파일의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
- FILE_NAME: 출력 파일의 이름입니다.
클라이언트 라이브러리 코드 샘플은 사용자가 모든 Drive 파일을 보고 관리할 수 있는 제한된 drive 범위를 사용합니다. Drive 범위에 대해 자세히 알아보려면 Google Drive API 범위 선택하기를 참고하세요.
코드 샘플은 내보내기 MIME 유형을 application/pdf로도 선언합니다. 각 Google Workspace 문서에 지원되는 모든 내보내기 MIME 유형의 전체 목록은 Google Workspace 문서의 내보내기 MIME 유형을 참고하세요.
브라우저에서 Google Workspace 문서 콘텐츠 내보내기
브라우저 내에서 Google Workspace 문서 콘텐츠를 내보내려면 files 리소스의 exportLinks 필드를 사용하세요. 문서 유형에 따라 사용 가능한 모든 MIME 유형에 대해 파일과 콘텐츠를 다운로드하는 링크가 반환됩니다. 사용자를 URL로 리디렉션하거나 클릭 가능한 링크로 제공할 수 있습니다.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
다음을 바꿉니다.
- FILE_ID: 다운로드 링크를 가져올 파일의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
브라우저에서 이전 버전으로 Google Workspace 문서 콘텐츠 내보내기
브라우저 내에서 이전 버전의 Google Workspace 문서 콘텐츠를 내보내려면 다운로드할 파일의 ID와 다운로드를 실행할 수 있는 내보내기 링크를 생성할 수정 버전의 ID를 사용하여 revisions.get 메서드를 사용합니다. 사용자에게 파일 다운로드 액세스 권한이 있는 경우 파일 및 콘텐츠를 다운로드하는 링크가 반환됩니다. 사용자를 이 URL로 리디렉션하거나 클릭 가능한 링크로 제공할 수 있습니다.
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
다음을 바꿉니다.
- FILE_ID: 다운로드할 파일의 ID입니다.
- REVISION_ID: 다운로드할 버전의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.
장기 실행 작업을 사용하여 Google Workspace 문서 콘텐츠 내보내기
장기 실행 작업(LRO)을 사용하여 Google Workspace 문서 콘텐츠를 내보내려면 다운로드할 파일의 ID와 수정 버전의 ID를 사용하여 files.download 메서드를 사용합니다. 자세한 내용은 장기 실행 작업 관리를 참고하세요.
curl
다음 curl 명령어는 LRO를 시작하고 JSON 응답을 반환합니다. 파일을 다운로드하거나 이 LRO를 폴링하려면 반환된 ID를 사용하여 콘텐츠 URL을 가져오는 다른 요청을 해야 합니다. 그런 다음 해당 URL에 최종 curl 요청을 하여 파일을 다운로드할 수 있습니다. 자세한 내용은 장기 실행 작업 관리를 참고하세요.
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=MIME_TYPE&revisionId=REVISION_ID" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
다음을 바꿉니다.
- FILE_ID: 다운로드할 파일의 ID입니다.
- MIME_TYPE: 내보낼 MIME 유형입니다.
- REVISION_ID: 다운로드할 버전의 ID입니다.
- ACCESS_TOKEN: API에 대한 액세스 권한을 부여하는 액세스 토큰입니다.