2013-05-11 12 views
6

Dies ist der Code, den ich derzeit verwenden, um Dateien von Google Drive in den Blobstore von Google App Engine zu lesen.So lesen Sie große Dateien von Google Drive in Gae Blobstore

Dies funktioniert gut für kleine Dateien, aber es gibt einen Fehler, wenn die Datei mehr als ~ 25 MB ist. Gibt es einen besseren Weg, um das zu tun, was ich versuche?

Dies ist der Fehler, den ich

Uncaught exception from servlet 
com.google.appengine.api.urlfetch.ResponseTooLargeException: The response from url https://doc-0o-bs-docs.googleusercontent.com/docs/securesc/97o44sjeam7f23b1flie9m3qqidhrago/97q4akk8bmpub24itqhclo1vakjusu84/1368259200000/14350098165097390874/14350098165097390874/0ByS2XCxCEzq-NUVuajAwWGVoR1U?h=16653014193614665626&e=download&gd=true was too large. 
    at com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:132) 
    at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:43) 
    at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.fetchResponse(URLFetchServiceStreamHandler.java:417) 
    at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getInputStream(URLFetchServiceStreamHandler.java:296) 
    at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getResponseCode(URLFetchServiceStreamHandler.java:149) 
    at com.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:37) 
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:95) 
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:980) 

sehen sollte ich hinzufügen, dass

Drive service = ((GoogleDrive) driveObject).getService(); 

kehrt

new Drive.Builder(httpTransport, jsonFactory, cred) 
      .build() 
+0

App Engine beschränkt die Größe von HTTP-Nachrichtentexten. – Linuxios

+0

Ich weiß, dass das passiert, aber gibt es keinen Weg dazu? Es ist ziemlich wichtig, dass ich große Dateien in den Blobstore lesen kann. Vielleicht muss ich es in mehreren Nachrichten lesen. – rvabdn

+0

Ich kann die Dateien, die ich brauche, von meinem Computer über einen Blobstoreservice hochladen, aber das ist nicht gut genug, weil ich es über die Laufwerksschnittstelle tun kann. – rvabdn

Antwort

3

Sie die Datei aus Google Drive in Stücke herunterladen. Verwenden Sie den Header Range in Ihrer Download-Anfrage, wie in der Google Drive documentation dokumentiert.

Range: bytes=500-999 
+0

Vielen Dank! Genau das habe ich mir erhofft. – rvabdn

+0

Nate, dass es noch Quota gibt und die Anzahl der Bytes, die Sie herunterladen können. Ich erhalte derzeit eine "urlfetch.Fetch()" Ausnahme um die 50MB Marke. (Beachten Sie, dass ich kein zahlender Nutzer bin. :-) Siehe https://developers.google.com/appengine/docs/quotas#UrlFetch –

0

Diese FilsService & FileWriteChannel api zugunsten der App Engine GCS-Client ist veraltet.

Verwandte Themen