文献种类:专题技术文献;
开发工具与关键技术:Visual Studio 2015 附件的上传与下载
作者: ;年级: ;撰写时间: 年 月 日
文献编号: ;归档时间: 5月 7日
附件的上传
开发工具与关键技术:Visual
Studio 2015 附件的上传与下载
作者:廖茂
撰写时间:2019年5月7日
附件上传、下载、移除这些处理比较复杂,接下来就从附件上传开始了解附件处理的过程吧
首先在视图里编写附件上传的方法,先给上传附件的按钮添加点击事件:
在上传附件按钮的点击事件里面调用附件上传表单的改变事件去选择文件,下面是附件上传表单的改变事件:
先声明一个变量接收选择的文件:
然后判断一下选择的文件是否大于零,即是否选择了文件,如果大于零,就声明一个变量接收选择的第一个文件,否则返回“请选择文件”的提示,是否选择文件判断完后,然后再判断接收的第一个文件的大小,判断以文件大小最大不能超过20MB为条件,即限制文件大小不能超过20MB,如果文件小于20MB,就创建一个FormData对象用来存放文件,并且将第一个文件放入FormData中,如果文件大于零,就返回“文件大小不能超过20MB”的提示。
将第一个文件放入FormData后,再创建一个XMLHttpRequest对象用于监听“上传成功、上传失败、上传进度”这些上传附件发生的事件,先是上传成功的监听事件:
声明一个变量接收发送状态,然后判断如果发送成功,就刷新表格,刷新表格中的路径连接的是控制器那边的附件查询方法,最后返回“上传成功”的提示。下面是上传失败的方法:
在上传文件中,我们需要知道上传文件的进度,所以还要加上一个上传进度的方法,并且这个方法会被不断地调用,如下:
在这里我们通过路径拼接来实现上传进度的提示。上传文件所需要的方法编写完后,就要上传文件了,需要注意的是,上传文件一定要用post方法提交,如下:
方法里面的路径连接的是控制器那边的文件上传方法。视图这边的附件上传的方法就完成了,接下来看一下附件上传的控制流程方法。
根据上面的方法我们可以知道,我们需要先查询附件再上传附件,那就先编写查询方法:
我们上传的附件是以列表的形式显示的,所以需要用分页的参数,先获取session中的文件表。先实例化一个变量用于存放session中的数据,然后判断如果session不为空,就把session中的数据存放到变量中,然后再把数据分页和封装,最后返回数据。附件的查询就结束了,接下来到附件的上传了:
先获取上传文件的大小,并且限制文件大小不能超过20MB。然后获取session中的文件,并且检查存放文件的目录是否存在,不存在就创建,如下:
接下来需要生命三个变量来分别接收文件类型、不带扩展名的文件名称以及原始文件名称,如下:
然后设置保存文件的路径并且保存文件:
接下来声明两个变量用于设置文件格式,文件的格式有“视频、音频、文本、文档、图片、其他”,对应设置的ID为“1、2、3、4、5、6”,用if{}else{}语句来设置文件格式,下面只截图两个格式:
格式设置完后,把格式ID、文件类型、文件名称等数据封装到一个变量里面:
然后更新session并且返回的状态为true:
最后返回false:
return Json(false,JsonRequestBehavior.AllowGet);
在上面a标签的拼接中,连接的路径是附件下载的控制流程方法,让我们看一下下载附件的控制流程方法:
声明一个变量设置存放文件的路径,然后判断需要下载的文件是否存在,如果存在,进入下一步操作,否则返回“下载的文件不存在”的提示,如下:
如果需要下载的文件存在的话,就先获取不包含文件扩展名的名称,然后去除文件上传时天添加的时间字符串,再还原文件名称,最后返回文件。
这就是附件上传的操作,在附件上传时,我们需要考虑附件上传时的“上传成功、上传失败、上传进度、下载附件”等事件, 需要对上传的文件的名称进行处理,在上传附件的控制流程中调用下载附件的方法。