I'm currently working on some much-needed updates to an AppEngine service that processes and serves content based on a CSV version of a spreadsheet. One of these new features is the ability to upload the spreadsheet via an HTML form. Of course, being early-ish on a Sunday morning, there was a little head scratching...
<html> <body> <form action="/admin" method="post"> <div><input type="file" name="csvfile" accept="text/csv"></div> <div><input type="submit" value="Update CSV"></div> </form> </body> </html>
Looks ok, right? Not quite.
self.request.get("csvfile") only returns the file name! I must be forgetting something. After my coffee kicked in, I took another look at it and facepalmed. The following modification returned what I wanted.
Sure enough, adding the "enctype" attribute has my code returning the contents of the CSV file.
Moral of the story? Don't code before your morning intake of caffeine.