2009-04-14 9 views
0

Ich arbeite an einer Google App Engine-Anwendung und bin an den Punkt gekommen, an dem ich Bilder im Dateisystem mit Entitäten in der Datenbank verknüpfen möchte.Wie kann ich Bilder mit Entitäten in Google App Engine verknüpfen?

Ich verwende das Skript "bulkupload_client.py", um Entitäten in die Datenbank hochzuladen, aber ich versuche herauszufinden, wie Dateisystemdateien den Entitäten zugeordnet werden können. Wenn ein Unternehmen die folgenden Bilder hat: Haupt, Detail, vorne, hinten Ich denke, ich könnte ein Benennungsschema wie diese will: <entity_key> _main.jpg

Ich nehme ich eine GUID für jede Entität erstellen könnte und verwenden, die aber das würde ich lieber nicht machen müssen.

Irgendwelche Ideen?

Ich denke, ich kann den Entitätsschlüssel nicht verwenden, da er zwischen lokalen und Produktionsdatenspeichern unterschiedlich sein könnte, so dass ich alle meine Bilder nach einer Produktion Bulkupload umbenennen müsste.

Antwort

0

Ich sehe hier zwei Möglichkeiten auf der Grundlage meiner sehr begrenzten Kenntnisse von GAE.

Erstens, Sie können eigentlich nichts in das Dateisystem in GAE schreiben, oder? Dies würde bedeuten, dass alle Bilder, die Sie einschließen möchten, als Teil Ihrer Webanwendung hochgeladen werden müssen und daher eine statische Namen- und Verzeichnisstruktur aufweisen, die bekannt und unveränderbar ist. In diesem Fall würde Ihre Idee von _main.jpg, OR /entity_key/main.jpg gut funktionieren.

Die zweite Option besteht darin, die Bilder als Blob in der Datenbank zu speichern. Dies ermöglicht möglicherweise das dynamische Hochladen von Bildern, anstatt jedes Mal, wenn Sie Bilder aktualisieren müssen, eine neue Version der Webanwendung zu laden. Es würde schnell in Ihre freie Datenbankplatz essen. Hier finden Sie Informationen zum Bereitstellen von Bildern aus der Datenbank. http://code.google.com/appengine/articles/images.html

+0

Ja, ich würde die Bilder hochladen, wenn ich das Projekt bereitstelle. Ich denke, dass ich den Entitätsschlüssel nicht verwenden kann, da er anders sein kann, wenn ich den Bulk-Upload in meinen Dev-Datenspeicher und den Produktionsdatenspeicher mache. – MStodd

+0

Ja, Sie benötigen eine Art von Kennung, über die Sie die Kontrolle haben und die sich garantiert nicht ändert. – digitaljoel

0

Wenn Sie die Bilder statisch hochladen, können Sie das schlüsselbasierte Schema verwenden, wenn Sie möchten: Weisen Sie den Entitäten einfach einen Schlüsselnamen zu und suchen Sie mit diesen die zugehörigen Bilder. Sie geben einen Schlüsselnamen (in der Python-Version) als key_name Konstruktorargument auf eine Entität Klasse:

myentity = EntityClass(key_name="bleh", foo="bar", bar=123) 
myentity.put() 

und Sie können wie so die Schlüsselnamen für eine Entität erhalten:

myentity.key().name() 

Es klingt Wie bei den Datenspeicher-Entities handelt es sich im Grunde um statischen Inhalt, also wäre es vielleicht besser, sie einfach als Literale in der Quelle zu codieren und sie im Speicher zu haben oder sie zur Laufzeit aus lokalen Datendateien zu laden, ohne die Abfrage abfragen zu müssen Datenspeicher für sie?