3

Ich lade binäre JPEG-Dateien mit html <form> auf meinem Python Webapp-Server auf Google App Engine gehostet. Die Servermethode empfängt das gesamte Image (versuchte Druckstatistiken wie Dateigröße/-typ usw. erfolgreich), schreibt sie jedoch nicht in den Cloud-Speicherpool von Google. Was am GCS-Bucket endet, ist eine beschädigte Datei von nur 48 Bytes.google cloud storage speichert nur (48 B) für jede Datei

def handleUpload(self): 

    client = self._get_storage_client() 
    bucket = client.get_bucket(config.CLOUD_STORAGE_BUCKET) 

    results = [] 

    for name, fieldStorage in self.request.POST.items(): 
    if type(fieldStorage) is unicode: 
     continue 
    result = {} 
    fileName = urllib.unquote(fieldStorage.filename) 
    blob = bucket.blob(fileName) 

    blob.upload_from_string(
     str(fieldStorage.file),fieldStorage.type) 

    url = blob.public_url 
    if isinstance(url, six.binary_type): 
     url = url.decode('utf-8') 

    results.append(result) 

    return results 

Antwort

0

Ich habe es herausgefunden. Eigentlich sollte es fieldStorage.file.read() anstelle von fieldStorage.file sein, weil es die Datei mit einem temporären Puffer und nicht die ganze Datei auf einmal liest.

Verwandte Themen