Word文件的上传

现在网路发展迅速,网上考试代替了传统的笔试考试,但试题还是需要上传的。使用表单提交将数据进行添加或上传,便捷了上传的操作,在实际项目中可不止添加几条或十几条数据那么简单,如果使用提交方式一条一条添加就比较麻烦,这时候我们就要使用Word文件上传的形式批量新增考题。
Word文件的上传其实就是将Word文件转换成可以以html样式显示到页面。对于考题而言,主要就是分为题目、题干、选项和答案四个模块。要做的就是将上传的考题数据以这四个模块为一组,将每一个考题、每个考题的每一块按规定格式在页面进行排列显示。
上传主要分为三块:
一、 接收上传文件
在这里插入图片描述
传参的方式是通过HttpPostedFileBase获取到页面上的数据然后将它继承给file,它是对客户端已经上传的文件数据进行获取。由于file继承的是它里面的字段,所以在这里它充当这个类的基类(它本身并不是一个类)。
在这里插入图片描述
首先定义一个工具类,主要是用于返回状态和文本。在进行处理之前需要对传过来的数据进行判断,如果上传的数据为空,则不能进行操作并返回一个文本提示数据为空,不为空则可以继续执行。
在判断文件前现要获取到文件的名称和文件的扩展名,而不同的浏览器上传文件时获取文件名称的方式不同。现在主流的使用浏览器都是可以直接获取到该文件的名称,而IE浏览器获取到的是该文件整个的路径。为了浏览器的兼容性,专门针对IE浏览器获取的文件名进行处理。
在这里插入图片描述
在传过来的参数中获取到文件的名称,然后再将这个名称通过分割(Split)的方式用“\”将名称以数组的形式获取到,最后通过索引=数组长度-1的方式获取到文件的名称。
在这里插入图片描述
通过正则表达式匹配出word文件的扩展名,再使用Contains()方法判断获取到已转换统一的小写形式的文件扩展名是否为其中的一种(Contains方法之前已经介绍过,便不再赘述),判断出该扩展名并不包含其中,则返回文本提示该文件不是一个word类型文件,该文件是一个word文件类型则创建一个以字符串拼接的形式将文件用当前时间与文件的扩展名拼接出的文件名称。
在这里插入图片描述
接下来将进行文件类型的转换,在转换之前需要将该文件在项目中一个临时文件夹内。先检查保存的路径是否存在,存在则继续执行,不存在则创建一个路径再继续执行。
在这里插入图片描述
用Path内的一个Combine()方法将保存目录与文件名称拼接成一个保存文件的路径,然后将文件用SaveAs()方法保存。SaveAs()是一个将上传文件保存的方法。
二、 文件类型转换
要将word文件在网页上进行显示需要先将文件的类型转换成html的类型。
在这里插入图片描述
使用Replace()方法将文件的扩展名替换成“html”,然后使用Combine()方法将临时文件夹的目录与它拼接成一个html文件保存的路径,将保存的文件通过Document()方法读取到自定义的一个document变量中,最后使用SaveToFile()方法将文件转换成html文档并将文档保存到html保存路径下。
三、 最终处理
现在在html路径下的文档并不能直接显示到页面上,还需要最终的处理。
使用ReadAllText()方法读取到该文件的所有字符串,然后通过正则表达式将文档中的
,style的所有属性值包括style一起去除掉,获取到文档中所有的p标签。
在这里插入图片描述
创建一个符合对应类型的一个变量,通过for循环遍历获取出所有p标签的文字图片内容然后保存到这个变量中。
创建一个空的变量,再通过两个foreach循环嵌套遍历这个变量,并获取到其中的文本内容,并将每次获取到的值拼接一个换行符放到空变量内,最后将这个变量返回。

你可能感兴趣的:(技术分享,MVC重点,前端,C#)