2016-06-09 1 views
0

Google 드라이브에서 App Folder 기기의 파일을 다운로드하려면 어떻게해야하나요? 이 폴더는 사용자가 볼 수 없으며 특정 응용 프로그램에서만 사용할 수 있습니다.앱 폴더에서 Android Google 드라이브 API 다운로드 파일

기본적으로이 폴더 (일부 응용 프로그램 및 사용자 설정)에 여러 파일을 업로드해야하며 기기에서 다시 다운로드해야합니다. 그것은 사용자 데이터를위한 일종의 백업처럼 작동합니다.

내가 응용 프로그램 폴더 안에 파일을 작성했던 나는 이런 식으로 읽을 수 있습니다

DriveFile appFolderFile = driveApi.getFile(googleApiClient, driveId); 

그러나 나는 기존 파일을 업로드 할 수있는 방법을 모르는 다음의 특정 폴더에 해당 파일을 다운로드 장치. 설명서를 검색했지만 해결 방법을 찾지 못했습니다.

문서에서는 파일 내용을 읽고 가져 오는 방법을 찾았지만 파일 자체를 다운로드하는 방법에 대해서는 알지 못했습니다.

아무도 나에게 어떻게 할 수있는 힌트를 줄 수 있습니까? 아니면 문서에서 올바른 섹션을 놓친 것일 수도 있고 불가능할 수도 있으며 REST API를 사용해야합니다.

업데이트 :

어쩌면, 나는 그것이 잘못된 받고 있어요 및 파일 콘텐츠를 다운로드하고 파일을 다운로드 사이에는 차이가 없다? download files으로

+1

드라이브를 사용하여 "해당 파일을 장치의 특정 폴더에 다운로드 할 수 없습니다." 할 수있는 일은 드라이브에서 가져온 콘텐츠를 복사하여 기기에 새 파일을 만드는 것입니다. 장치에서 직접 파일을 만들어야합니다. – Anatoli

답변

1

, 당신은에 인증 된 HTTP GET 요청을 파일의 resource URL 쿼리 매개 변수이 같은 alt=media 포함

파일을 다운로드
GET https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media 
Authorization: Bearer ya29.AHESVbXTUv5mHMo3RYfmS1YJonjzzdTOFZwvyOAUVhrs 

이 최소한 읽기 액세스 할 수 있도록 사용자가 필요합니다. 또한 앱에 파일 콘텐츠를 읽을 수있는 권한이 있어야합니다. 예를 들어 drive.readonly.metadata 범위를 사용하는 앱은 파일 콘텐츠를 다운로드 할 권한이 없습니다. 수정 권한이있는 사용자는 viewersCanCopyContent 필드를 true로 설정하여 읽기 전용 사용자의 다운로드를 제한 할 수 있습니다.

당신이 다운로드 한 후에는 특정 폴더에 파일을 넣어 parent 매개 변수를 사용할 필요가
String fileId = "0BwwA4oUTeiV1UVNwOHItT0xfa2M"; 
OutputStream outputStream = new ByteArrayOutputStream(); 
driveService.files().get(fileId) 
     .executeMediaAndDownloadTo(outputStream); 

다음에 올바른 ID를 지정 드라이브 API를 사용하여 파일 다운로드를 수행

parents 파일의 속성

예 :

String folderId = "0BwwA4oUTeiV1TGRPeTVjaWRDY1E"; 
File fileMetadata = new File(); 
fileMetadata.setName("photo.jpg"); 
fileMetadata.setParents(Collections.singletonList(folderId)); 
java.io.File filePath = new java.io.File("files/photo.jpg"); 
FileContent mediaContent = new FileContent("image/jpeg", filePath); 
File file = driveService.files().create(fileMetadata, mediaContent) 
     .setFields("id, parents") 
     .execute(); 
System.out.println("File ID: " + file.getId()); 

확인이 thread.

+0

그래서이 메소드는 Android 용 드라이브 API가 아닌 드라이브 REST API를 사용합니다. – Alex