Ich versuche, ein Blob aus einer Bild-URL zu erstellen, aber ich kann nicht herausfinden, wie das geht.Erstellen Blob von URL in Gae mit Python
Ich habe gelesen, bereits in der Dokumentation von Google über Blob zu schaffen, aber es spricht nur über Blob von einem Formular Erstellen und Verwenden von blobstore.create_upload_url('/upload_photo').
ich einige Fragen über dort zu lesen, aber ich habe nichts gefunden, das mir helfen könnte.
Meine App hat eine Liste von Bild URL und ich möchte diese Bilder in den Blobstore speichern, damit ich sie später dienen kann. Ich denke, dass Blobstore die Lösung ist, aber wenn es einen besseren Weg gibt, bitte sag es mir!
EDIT Ich versuche, Google Cloud Storage zu nutzen:
class Upload(webapp2.RequestHandler):
def get(self):
self.response.write('Upload blob from url')
url = 'https://500px.com/photo/163151085/evening-light-by-jack-resci'
url_preview = 'https://drscdn.500px.org/photo/163151085/q%3D50_w%3D140_h%3D140/d3b8d92296f9381a91f6d41b1c607c92?v=3'
result = urlfetch.fetch(url_preview)
if result.status_code == 200:
doSomethingWithResult(result.content)
self.response.write(url_preview)
def doSomethingWithResult(content):
gcs_file_name = '/%s/%s' % ('provajack-1993', 'prova.jpg')
content_type = mimetypes.guess_type('prova.jpg')[0]
with cloudstorage.open(gcs_file_name, 'w', content_type=content_type, options={b'x-goog-acl': b'public-read'}) as f:
f.write(content)
return images.get_serving_url(blobstore.create_gs_key('/gs' + gcs_file_name))
(in Stackoverflow gefunden), aber dieser Code geben Sie mir eine Fehlermeldung:
*File "/base/data/home/apps/e~places-1993/1.394547465865256081/main.py", line 54, in doSomethingWithResult
with cloudstorage.open(gcs_file_name, 'w', content_type=content_type, options={b'x-goog-acl': b'public-read'}) as f:
AttributeError: 'module' object has no attribute 'open'*
Ich kann nicht verstehen Warum. Ich muss etwas im Cloud-Speicher einstellen?
Warum Sie versuchen, Speicher Google Cloud nicht statt Blobstore? –
Laden Sie die Datei herunter und lesen Sie sie, indem Sie die urlfetch-Klasse von gae verwenden, und erstellen Sie anschließend eine neue Datei in gcs bucket. Geben Sie dem gcs-Bucket die entsprechenden Berechtigungen, um die Bucket-Objekte für alle verfügbar zu machen. Dann generieren Sie eine gcs-Objekt-Serving-URL, geben Sie diese URL an alle Ihre Benutzer. –
Danke für den Rat. Ich habe meine Antwort bearbeitet, weil es nicht funktioniert! Kannst du mir helfen? –