In CGI-Programmen muss man, wenn man einen Dateiupload anbieten möchte, oft mit temporären Dateien jonglieren. Nun hat man in der verteilten Umgebung von der App Engine gar kein Schreibzugriff auf ein Dateisystem im klassischen Sinne. Zunächst habe ich eine Weile in der Dokumentation gesucht, um zu finden, wie es mit der AppEngine geht. Erst in einem Beispiel zur Bildbearbeitung bin ich dann fündig geworden.
Es ist schlicht zu einfach. Hat man ein HTML-Eingabefeld zum Upload mit Namen „uploadfile“, dann greift man auf die hochgeladenen Daten einfach so zu:
filecontent = self.request.get ( 'Uploadfile') |
Der Dateiinhalt befindet sich danach in der Variable „filecontent“. Wenn es eine Textdatei ist, kann ich den Inhalt einfach wie einen String verarbeiten.
Für viele Anwendungsfälle ist das sehr bequem und ist völlig ausreichend. Interessant wäre noch zu wissen:
- Wie kommt man an den ursprünglichen Dateinamen ran?
- Kann man möglichst früh die Verarbeitung verweigern, wenn die Datei zu groß ist?