如何在MVC中下载模板和上传word文件
开发工具与关键技术:VS MVC
作者:沈金凤
年级:18级(4)班
撰写日期:2019年5月6日
首先我们的创建一个控制器和一个试图页面,然后再在控制器中写下载模板的代码:先定义一个方法再写获取下载模板的路径(要先把模板引进你所写的定义中),接着判断文件是否存在,如果文件存在就可以读取文件返回文件,不存在的话就返回一个文本(返回一个单纯的文字就可以用Content来返回文字),获取一个MIME的文件类型来获取文件和返回文件:如下图所示:(代码跟老师的基本相同)
上图所用的MIME类型是描述信息内容类型的因特网标准,多用于互联网邮件扩展类型是设定某种扩展名文件用一种应用程序来打开的方式来打开,当扩展名文件被访问时浏览器会自动使用指定应用程序来打开。每个MIME类型由两部分组成,前面是数据的 大类别例如声音audio、图像image等等,后面定义具体的种类。常见的MIME类型如下图:
接下来就是在试图页面中写上所需要要的css代码和js部分的代码:js代码先写一句var layer;的全局变量加载&初始化layui模块:下拉框的绑定有(查询科目和查询适用单位)接着是下载试题批量上传的模板是用(open)。如下是页面的代码:(代码跟老师的基本相同)
下载模板的结果图
接着是要写文件上传的按钮的点击事件,你不写的话你写好上传文件的代码你也上传不了啊!是吧!还有就是你word文件上传到控制器的UploadWord的方法中,文件加载时显示的加载图标然后左做判断:如下图所示:
一般也都会有个上传文件的表单,在文件上传表单一个form标签包涵着个input标签,在form有个action是个提交的地址,method是提交的方法(post/get),在input标签中有个name值,accept值是接受的数据类(.doc/.docx)说明是以word文档的样式来上传的,还有一个uploadWord值得提交的方法:如下图所示:
在试图页面写好了文件的内容的话就去控制器中定义一个方法来定义一个数据类型HttpPostedFileBase来接受file类型,其中在控制器中的file类型要和文件上传表单中的name值要相同,如果不相同的话是接受不到你所要接受的文件的,在不同的浏览器中上传文件,上传之后的文件名称也会不同如:chrome、firefox、搜狗、file的名称直接是:批量导入模板.docx 而IE的file的名称则是:\User\Admin\Downloads\批量导入模板.docx,这样的情况的话我们就会进行分割(”\”),分割后最后一项一定是文件的名称,首先判断->获取值->定义->获取文件的扩展名->再判断->获取文件名称放在目录中->保存路径->然后保存文件->将word转换HTML->将文件转化成html再保存,html保存路径,保存文件->读取html文件->替换html中的内容->去掉style后面的样式->用正则表达获取所有的p标签->再保存最终结果(如果有图片要特殊处理)-> 等方法:如下图所示:
(代码跟老师的基本相同)
最后word文件上传成功(文字上传成功了,图片还需要处理下),成功之后还要保存试题(试题分割、试题处理、去掉重复试题、处理图片、对试题数据进行保存等等)才能完成批量导入的内容。如下图就是word文件上传的结果:(如果有理解错了,请多多指教!)