插件--文件上传

作者:李光辉

撰写时间:2019.5.24

在最近的学习项目中看到需要用到上传文件这个功能点,虽然现在有很多上传组件可以利用,但是了解Web上传文件的原理,对于处理突然出现的问题会有很大的帮助,下面就来讲一下通过浏览器上传文件的基本原理。在了解了原理之后,就可以非常容易地自制满足自身需要的上传组件了。
插件--文件上传

例如上图中的图片上传,点击选择文件功能按钮,选择需要上传的文件确认后上传,然后上传的文件就会显示在图像信息中,同时可以设置图片的格式。
插件--文件上传

在客户端代码中需要使用来选择要上传的文件,并上传,代码如下:
插件--文件上传
在上传文件时,标签必须加上enctype=“multipart/form-data”,否则浏览器无法将文件内容上传到服务端。
插件--文件上传
首先来说一下控制器的代码部分:

先写一个方法,注意方法接收的参数为HttpPostedFileBase(提供对客户端已上载的单独文件的服务),然后接收的变量名称必须是upload,否则就会接收不了文件。
插件--文件上传
在如果upload不为空的情况下,进行下面一系列的操作。
插件--文件上传
通过文件名称获取文件的扩展名,系统自动识别文件类型;然后拼接一个新的文件名称,通过UID生成一段随机字符避免名称重复;文件上传之后需要保存,判断是否存在目录,而MapPath的作用是把相对路径转换为绝对路径;然后保存文件的路径,而文件的路径就是上面拼接的文件名称加上创建的目录。
插件--文件上传
然后判断上传的文件是否是需要的格式,如果不是则无法上传,其中最重要的就是upload.SaveAs(filePath)用于保存上载文件的内容。