i Zip-Dateien in das Blobstore in GAE erstellt, dann habe ich versucht, zu erhalten (Download), um diese Zip-Datei mit diesem Code:Send_blob in GAE
def send_blob(blob_key_or_info, content_type=None, save_as=None):
CONTENT_DISPOSITION_FORMAT = "attachment; filename=\"%s\""
if isinstance(blob_key_or_info, blobstore.BlobInfo):
blob_key = blob_key_or_info.key()
blob_info = blob_key_or_info
else:
blob_key = blob_key_or_info
blob_info = None
if blob_info:
content_type = content_type or mime_type(blob_info.filename)
save_as = save_as or blob_info.filename
#print save_as
logging.debug(blob_info)
response = Response()
response.headers[blobstore.BLOB_KEY_HEADER] = str(blob_key)
if content_type:
if isinstance(content_type, unicode):
content_type = content_type.encode("utf-8")
response.headers["Content-Type"] = content_type
else:
del response.headers["Content-Type"]
def send_attachment(filename):
if isinstance(filename, unicode):
filename = filename.encode("utf-8")
response.headers["Content-Disposition"] = (\
CONTENT_DISPOSITION_FORMAT % filename)
if save_as:
if isinstance(save_as, basestring):
send_attachment(save_as)
elif blob_info and save_as is True:
send_attachment(blob_info.filename)
else:
if not blob_info:
raise ValueError("Expected BlobInfo value for blob_key_or_info.")
else:
raise ValueError("Unexpected value for save_as")
return response
und wenn ich nenne diese Funktion in der Haupt- und Druck Rückkehr Rückgabewert dieser Funktion (Antwort) i erhalten zum Beispiel: 200 OK Content-Length: 0 X-App Engine-BlobKey: C25nn_O04JT0r8kwHeabDw == Content-Type: application/zip Content-Disposition: attachment; filename = "test.zip" Aber die Frage, wie kann ich jetzt diese Antwort verwenden, um die Datei auf meinen PC zu bekommen (herunterladen)? Vielen Dank im Voraus.
gehen verwenden werden: Wenn ich diese Klasse Handler dann in separate Seite setzen Sie den Schlüssel zu übergeben , das Problem war: Status: 404 nicht gefunden Content-Type: text/html; charset = utf-8 Cache-Steuerung: no-cache Läuft ab: Fr, 01.01.1990 00:00:00 GMT Content-Length: 0, der Handler hat nicht ausgeführt. Haben Sie eine Idee zu diesem Problem? –
Wird in Ihrem Protokoll der Fehler "blobstore.get (...) fehlgeschlagen" angezeigt? Wenn dies der Fall ist, haben Sie möglicherweise den falschen Schlüssel übergeben oder den URL nicht korrekt codiert. Falls nicht, haben Sie den Handler möglicherweise nicht ordnungsgemäß in Ihrer app.yaml hinzugefügt. –