python接收并处理post上传的Excel文件——基于Django框架

开发环境:

本文章基于Django2.0.4框架,Python3.6.3版本,Apache2.4.23

更新:

测试发现,以下获取post上传文件的方法,只适用于较大文件的上传。文件较小时,上传的文件对应InMemoryUploadedFile对象,也就是Django框架直接将小文件读取到了内存中



项目需求:

form表单post上传Excel文件,Python接收上传的文件并处理。

需求分析:

要处理上传的Excel文件,就需要先获取post上传的临时文件路径。

Google了相关文章,如: 如何用python接收html页面上传的文件

首先都是通过:

uploadedFile = request.FILES.get('filename')

获取到上传的文件数据,但处理文件基本都是直接将uploadedFile保存到指定路径。

而处理Excel文件,Google到的相关文章基本都是读取一个静态的Excel文件,并没有动态获取post上传Excel文件的例子。

实现思路:

按照Google到的文章尝试后,得到一个有用的报错信息:

注意划线地方的TemporaryUploadedFile。Google到有关TemporaryUploadedFile的这篇文档:《Uploaded Files and Upload Handlers》

TemporaryUploadedFile是Uploaded的一个子类,而每个request.FILES都是一个Uploaded对象,Uploaded的相关信息可以具体看文档。

TemporaryUploadedFile就有一个我们需要的方法temporary_file_path()

于是:

uploadedFile = request.FILES.get('filename')

tempFilePath = uploadedFile.temporary_file_path()

即可获取post上传的临时文件路径,然后就可以使用openpyxl、xlrd等第三方处理上传的Excel文件。

处理Excel文件的相关文章:

openpyxl:https://www.jianshu.com/p/220b01d38f2c

xlrd:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html

一些处理Excel的第三方:http://www.python-excel.org/

你可能感兴趣的:(python接收并处理post上传的Excel文件——基于Django框架)