原理:1、上传文件:通过 input 上传文件,将文件读写为内存流,通过获取后缀,然后生 成唯一文件名,通过制定路径进行保存文件。 2、下载文件:通过传输指定的文件名,在指定的路径里复制已存在的文件,并返 回给网页。 (依赖 JQuery 插件)
关键字:GetFileName(获取文件名称)、GetExtension(获取文件后缀)
一、上传文件:以上传图片为例(文件大小<128m)
1、通过 input 进行选择文件上传
2、然后通过 jq 的选择器选取到 input 所选择的文件 var userPicture = $("#userPictureFile").get(0).files[0];
3、通过 ajax 提交数据至控制器 、 注(method 只能使用 post)
4、控制器接收数据,使用基类 HttpPostedFileBase
通过 GetExtension 获取文件尾缀 string imgExtension = Path.GetExtension(userPicture.FileName);
5、生成文件唯一名称以及获取保存路径(文件名称可以自行设定或随机生 成)
随机生成唯一名称:通过调用 Guid.NewGuid() (全球唯一标识符)拼 接文件尾缀
获取指定的保存路径:
6、保存文件
通过 SaveAs 对文件进行保存 userPicture.SaveAs(imgFilePath);
可根据实际情况,自身需求,自行传参设定文件名称(同一保存文件目录下不 能存在相同文件名称)
二、下载文件:以下载压缩包为例(文件大小<128m)
下载文件较上传文件要简单一些,只需从指定的路径提取数据便可
1、通过触发点击事件,打开指定的下载路径
2、获取获取指定的下载目录(可传参灵活改变压缩包以及下载的目录路 径)
3、判断指定下载的文件是否存在,若不存在则进行报错
4、获取文件的名称(带扩展名) 通过 GetFileName 获取到文件的名称
5、将文件返回给视图,实现文件下载
动态下载文件,只需灵活变通一下,动态传参(压缩包的名称,或者下载的目 录)