首先说明一下最终实现的效果:===>用户上传excel文件====>网页端显示读取文件并显示预览效果====>上传文件至服务器,服务器后台开始调用接口自动转账===>所有转账信息存储到数据库中,失败信息返回到网页上。
上一篇已经大致将支付接口实现了,这一篇将介绍如何和Django后台连接起来使用,在项目中使用的是excel文件储存转账信息的,所以我们首先需要了解如何读取Excel文件,然后才是进行转账操作,django则是提供网页服务,接收用户上传excel文件,保存交易信息等等。
1.网页端的预览: 选择上传文件后需要将文件内容读取并显示出来,方便确认信息是否有误后在上传,这里主要是通过JS读取文件内容,然后再把数据以表格的形式展现出来。这里用到了一个一个xlsx插件
//文件读取
HTML部分:
最终效果:
2.Excel文件上传和保存: 通过Ajax提交form表单数据到后台,Ajax操作没什么可说的了,需要注意的是form 的enctype属性值,来看一下W3C上面的介绍
因此我们在上传文件的时候要用enctype="multipart/form-data" 前端发送文件了接下来就是后端接收文件了,文件数据会包含在request.FILES里面(注意,只有当request方法为POST并且form 的enctype属性值为multipart/form-data的时候request.FILES才会有数据) request.FILES中包含下面几个属性:name(文件名)、size(文件大小)、content_type(文件类型)、read()读取整个文件、chunks()返回一个生成器对象file = request.FILES.get('payment', None)f = open(file.name, 'wb')for chunck in file.chunks(): f.write(chunck)f.close()
至此文件就保存下来了,文件名就是上传的文件名,路径默认为根路径