開發(fā)環(huán)境:
本文章基于Django2.0.4框架,Python3.6.3版本剿另,Apache2.4.23
更新:
測試發(fā)現(xiàn)刁赖,以下獲取post上傳文件的方法,只適用于較大文件的上傳泞歉。文件較小時逼侦,上傳的文件對應(yīng)InMemoryUploadedFile對象,也就是Django框架直接將小文件讀取到了內(nèi)存中
項目需求:
form表單post上傳Excel文件腰耙,Python接收上傳的文件并處理榛丢。
需求分析:
要處理上傳的Excel文件,就需要先獲取post上傳的臨時文件路徑挺庞。
Google了相關(guān)文章晰赞,如:?如何用python接收html頁面上傳的文件
首先都是通過:
uploadedFile = request.FILES.get('filename')
獲取到上傳的文件數(shù)據(jù),但處理文件基本都是直接將uploadedFile保存到指定路徑。
而處理Excel文件掖鱼,Google到的相關(guān)文章基本都是讀取一個靜態(tài)的Excel文件然走,并沒有動態(tài)獲取post上傳Excel文件的例子。
實現(xiàn)思路:
按照Google到的文章嘗試后戏挡,得到一個有用的報錯信息:
注意劃線地方的TemporaryUploadedFile芍瑞。Google到有關(guān)TemporaryUploadedFile的這篇文檔:《Uploaded Files and Upload Handlers》
TemporaryUploadedFile是Uploaded的一個子類,而每個request.FILES都是一個Uploaded對象褐墅,Uploaded的相關(guān)信息可以具體看文檔拆檬。
TemporaryUploadedFile就有一個我們需要的方法temporary_file_path()
于是:
uploadedFile = request.FILES.get('filename')
tempFilePath = uploadedFile.temporary_file_path()
即可獲取post上傳的臨時文件路徑,然后就可以使用openpyxl妥凳、xlrd等第三方處理上傳的Excel文件竟贯。
處理Excel文件的相關(guān)文章:
openpyxl:http://www.reibang.com/p/220b01d38f2c
xlrd:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html
一些處理Excel的第三方:http://www.python-excel.org/