2017-12-27 4 views
0

Es ist mir gelungen, eine Datei auf den Google-Speicher zu überladen, aber ich möchte die Erstellung einer Datei überspringen und stattdessen StringIO verwenden und die Datei direkt im Google-Speicher erstellen.Google Storage Python API - Hochladen eines StringIO-Objekts

Da ich bin neu in Python, ich habe gerade versucht, die Standard-Methode zu verwenden, die ich für das Hochladen der erstellten Datei verwendet:

def cloud_upload(self, buffer, bucket, filename): 
    buffer.seek(0) 
    client = storage.Client() 
    bucket = client.get_bucket(bucket) 
    blob = bucket.blob(filename) 
    blob.upload_from_filename(buffer) 

Aber ich bekomme die Fehlermeldung:

Typeerror: erwartet String oder Puffer

Aber da ich es das StringIO-Objekt gab, weiß ich nicht, warum das nicht funktioniert?

Antwort

0

Ich bin mir nicht sicher, wie Sie die cloud_upload Funktion aufrufen, aber Sie können einfach die upload_from_filename Funktion verwenden, um Ihren Bedarf zu befriedigen.

def upload_blob(self, bucket_name, source_file_name, destination_blob_name): 
    """Uploads a file to the bucket.""" 
    storage_client = storage.Client() 
    bucket = storage_client.get_bucket(bucket_name) 
    blob = bucket.blob(destination_blob_name) 

    blob.upload_from_filename(source_file_name) 

    print('File {} uploaded to {}.'.format(
     source_file_name, 
     destination_blob_name)) 
+0

gut, ich versucht, aber ich Typeerror: erwartete String oder Puffer ... wenn ich versuche, anstelle eines Dateipuffer (StringIO Objekt) zu verwenden ... –

+0

Können Sie mit 'blob.upload_from_filename versuchen (Dateiname = '/ local/path.txt') '? – patilnitin

+0

Ja, ich habe so etwas gemacht, aber ich wollte das StringIO-Objekt direkt hochladen - ohne zuerst eine Datei zu erstellen und diese dann hochzuladen! –

Verwandte Themen