0

folgende Situation vor: Ein Benutzer ein Bild zu Facebook Messenger sendet und Facebook bietet eine URL, die wie diese genanntBild hochladen von Facebook Messenger URL aws s3

https://scontent.xx.fbcdn.net/v/t35.0-12/23998500_10155996498283474_1759188226_o.jpg?_nc_ad=z-m&_nc_cid=0&oh=44c94cc85e75048cc4355e7422281cf5&oe=5A1A5AE7

Ich speichere diese URL in einer Variablen sieht url. Nun möchte Ich mag das Bild meines AWS S3 laden:

import boto 
import os 

AWS_ACCESS_KEY_ID = ‘somekey’ 
AWS_SECRET_ACCESS_KEY = 'somesecret' 
END_POINT = 'us-east-1'       
S3_HOST = 's3.us-east-1.amazonaws.com'    
BUCKET_NAME = 'somestorage' 

def upload_s3(url): 
    fname = url 
    uploaded_fname = 'somename' 
    s3 = boto.s3.connect_to_region(END_POINT, 
           aws_access_key_id=AWS_ACCESS_KEY_ID, 
           aws_secret_access_key=AWS_SECRET_ACCESS_KEY, 
           host=S3_HOST) 

    bucket = s3.get_bucket(BUCKET_NAME) 
    k = Key(bucket) 
    k.key = uploaded_fname 
    k.set_contents_from_filename(fname) 

Jedoch, wie dieser Python wirft mich einen Fehler keine solche Datei oder das Verzeichnis im Hinblick auf die URL. Wie soll es gehen?

+1

Sie müssen zuerst die Datei herunterladen. – jordanm

+0

Also schlagen Sie vor, ich es in einen statischen Ordner in meinem Django-Projekt herunterladen und von dort hochladen? das sollte lokal und auf AWS EB funktionieren, denke ich. Nach dem Hochladen auf S3 kann ich die Dateien löschen, um meine Speichernutzung vernünftig zu halten – robjeiter

Antwort

0

Wie von @jordanm vorgeschlagen, die Datei in den statischen Ordner des Django-Projekts herunterladen, von dort nach S3 hochladen und dann die Datei löschen, dann von statisch funktioniert.