I BLOB sono memorizzati nel mio Blobstore e voglio trasferire questi file su Google Drive. Quando uso il Google App Engine UrlFetchServiceCome inviare un file di grandi dimensioni (> 5 mb) da Blobstore a Google Drive?
URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService();
URL url = new URL("https://www.googleapis.com/upload/drive/v1/files");
HTTPRequest httpRequest = new HTTPRequest(url, HTTPMethod.POST);
httpRequest.addHeader(new HTTPHeader("Content-Type", contentType));
httpRequest.addHeader(new HTTPHeader("Authorization", "OAuth " + accessToken));
httpRequest.setPayload(buffer.array());
Future<HTTPResponse> future = fetcher.fetchAsync(httpRequest);
try {
HTTPResponse response = (HTTPResponse) future.get();
} catch (Exception e) {
log.warning(e.getMessage());
}
Problema: Quando il file è superiore a 5 MB, si supera il limite della dimensione richiesta UrlFetchService (Link: https://developers.google.com/appengine/docs/java/urlfetch/overview#Quotas_and_Limits)
Alternativa: Utilizzando API Google drive ho questo codice:
File body = new File();
body.setTitle(title);
body.setDescription(description);
body.setMimeType(mimeType);
// File's content.
java.io.File fileContent = new java.io.File(filename);
FileContent mediaContent = new FileContent(mimeType, fileContent);
File file = service.files().insert(body, mediaContent).execute();
Problemi con questa soluzione: FileOutputStream non è supportato su Google App Engine per gestire byte [] letti da Blobstore.
Qualche idea?
Grazie per adattare il mio codice Drive. Aggiorno la mia applicazione sfruttando il caricamento ripristinabile. Dopo aver caricato il codice per Google App Engine ottengo java.lang.NoSuchMethodError: com.google.api.services.drive.Drive $ file $ Insert.getMediaHttpUploader() lcom/google/api/client/googleapis/MediaHttpUploader; Ho bisogno di cercare un po 'di più su questo ... – Martin
Quale versione di google-api-java-client hai? È l'ultima? Vedi qui: http://code.google.com/p/google-api-java-client/ –
Grazie Vic! Dopo aver aggiornato tutte le librerie API utilizzate, il codice fornito funziona perfettamente! – Martin