Downloads de mídia retomáveis (original) (raw)
Downloads de mídia retomáveis
Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
Ao fazer o download de um arquivo de mídia grande de um servidor, use_download de mídia retomável_ para fazer download do arquivo em cada bloco. A API do Google as bibliotecas geradas contêm métodos de conveniência para interagir com as bibliotecas download de mídia.
O protocolo de download de mídia retomável é semelhante ao upload de mídia retomável protocolo, que é descrito naDocumentação da API Google Drive.
Detalhes da implementação
As principais classes de interesse são MediaHttpDownloader e MediaHttpDownloaderProgressListener. O conteúdo de mídia é baixado em blocos, e o tamanho desses blocos é configurável. Se um erro de servidor for encontrado em uma solicitação, ela será repetida.
Se os métodos nas bibliotecas geradas de serviço específico forem compatíveis com download nodocumento de descoberta, um método de download conveniente é criado para esses métodos, que leva em umaOutputStream. (Para obter mais informações sobre como usar o download de mídia com o serviço de descoberta de APIs do Google, consulteDownload de mídia.
Exemplo:
class CustomProgressListener implements MediaHttpDownloaderProgressListener {
public void progressChanged(MediaHttpDownloader downloader) {
switch (downloader.getDownloadState()) {
case MEDIA_IN_PROGRESS:
System.out.println(downloader.getProgress());
break;
case MEDIA_COMPLETE:
System.out.println("Download is complete!");
}
}
}
OutputStream out = new FileOutputStream("/tmp/driveFile.jpg");
DriveFiles.Get request = drive.files().get(fileId);
request.getMediaHttpDownloader().setProgressListener(new CustomProgressListener());
request.executeMediaAndDownloadTo(out);
Também é possível usar esse recurso sem as bibliotecas geradas específicas de serviços. Exemplo:
OutputStream out = new FileOutputStream("/tmp/Test.jpg");
MediaHttpDownloader downloader = new MediaHttpDownloader(transport, httpRequestInitializer);
downloader.setProgressListener(new CustomProgressListener());
downloader.download(requestUrl, out);
O download de mídia recuperável está ativado por padrão, mas é possível desativá-lo e usá-lo como download direto de mídia, por exemplo, se você estiver fazendo o download de um arquivo pequeno. O download direto de mídia foi introduzido no1.9.0-betada biblioteca de cliente das APIs do Google para Java.
O download de mídia direto faz o download de todo o conteúdo de mídia em uma solicitação HTTP, pois ao contrário do protocolo de download de mídia retomável, que pode fazer o download em vários solicitações. Fazer um download direto reduz o número de solicitações HTTP, mas aumenta a chance de falhas (como falhas de conexão) que podem acontecer com downloads grandes.
O uso é o mesmo descrito acima, mais os seguintes que dizMediaHttpDownloaderpara fazer downloads diretos:
mediaHttpDownloader.setDirectDownloadEnabled(true);