2017-02-03 6 views
0

Ich habe eine S3 Bukket URL eines Bildes. Ich versuche, dieses Bild mit Urllib oder wget zu downloaden, in beiden Fällen wird Code erfolgreich ausgeführt, aber das beschädigte Bild wird heruntergeladen. Wenn ich korrupt sage, meine ich, dass für ein 2MB Bild nur 200kb heruntergeladen werden.kann Bild nicht herunterladen S3 Eimer

urllib.urlretrieve(str(sys.argv[1]), "data/img"+str(randomword(10))+".jpg")

Im späteren Teil der Linie, bin ich das Hinzufügen nur zufällige Zeichenfolge mit dem Namen des Bildes, die heruntergeladen werden soll.

Pls Hilfe

+0

Haben Sie die Antwort überprüft? Das Bild, das gespeichert wird, könnte tatsächlich eine aws xml-Antwort sein, die besagt, dass es aufgrund von Berechtigungen oder etwas fehlgeschlagen ist. Versuchen Sie, das Bild mit einem Texteditor zu öffnen, um zu sehen, ob das der Fall ist. – davidejones

+0

ja, ich habe eine XML-Antwort sagen 'Zugang Denied' ' Fehler>AccessDenied erhalten Zugriff verweigert ' – Guru

+0

Wie ich mit diesem – Guru

Antwort

1

Sie können die Datei durch Authentifizierung zuerst und herunterladen. Ich würde empfehlen, nur Python Boto-Bibliothek zu verwenden, um Amazon Web Services zu behandeln. Wenn ja, dass der Code so etwas wie dieses

import boto 

# set your AWS creds on your environment path or hardcode it 
AWS_ACCESS_KEY_ID = os.getenv("AWS_KEY_ID") 
AWS_ACCESS_SECRET_KEY = os.getenv("AWS_ACCESS_KEY") 

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_ACCESS_SECRET_KEY) 

bucket = conn.get_bucket("my_bucket_name") 

key = bucket.get_key('file_on_s3.txt') 
key.get_contents_to_filename('where_file_goes_locally.txt') 

aussehen würde, wenn Sie wirklich Boto nicht verwenden möchten, können Sie es manuell zusammensetzen und im Wesentlichen tun, was Boto die richtigen Anfrage aus Ihrer aws nicht aufbauen Kredits. Ich mache das mit einem Bash-Skript auf einem Server, den ich habe. Dies sollte Sie in die richtige Richtung weisen (https://gist.github.com/davidejones/d05f51df75e659111227), wenn Sie dies mit Python-Anfragen oder urllib schreiben wollen, die auch funktionieren sollten.