I need to upload and process a CSV file from a form in a Google App Engine application based on Webapp2 (Python) I understand I could use blobstore to temporary store the file but I am curious to know if there is a way to process the file without having to store it at all.
Asked
Active
Viewed 1,880 times
2 Answers
4
If you need to upload a file via webapp2 with an HTML form, the first thing you need to do is change HTML form enctype
attribute to multipart/form-data
, so the code snippet seems like:
<form action="/emails" class="form-horizontal" enctype="multipart/form-data" method="post">
<input multiple id="file" name="attachments" type="file">
</form>
In python code, you can read the file directly via request.POST
, here's a sample code snippet:
class UploadHandler(BaseHandler):
def post(self):
attachments = self.request.POST.getall('attachments')
_attachments = [{'content': f.file.read(),
'filename': f.filename} for f in attachments]

Xiao Hanyu
- 1,402
- 16
- 11
3
The content of uploaded files is in self.request.POST
in your handler, so you can get that content (assuming e.g the field for the uploaded file is named 'foo'
) with e.g
content = self.request.POST.multi['foo'].file.read()
So now you have the content as a string -- process it as you wish. This does of course assume the thing will fit in memory (no multi-megabyte uploads!-)...

Alex Martelli
- 854,459
- 170
- 1,222
- 1,395