一,文件上传
springMVC的文件上传是基于 commons-fileupload组件的文件上传,但进行了封装,简化了代码,
实现文件上传:
1.首先导入依赖:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
2.设计上传表单,表单提交方式必须是post,entype属性必须是 multipart/form-data ,表示以二进制流方式处理表单数据,并将指定文件内容封装到请求参数,input的type选择file
3.controller控制器中新增处理文件上传请求
MultipartFile类型参数可以对上传文件操作,有以下方法:
但主要他的参数名字 myfile 必须和inpunt的name保持一致,如果不一致需要使用@RequestParam注解映射。
最重要的是,需要在springmvc的配置类中配置文件解析器,并加上@Bean注解
上传后返回的页面的代码:
效果如下:
-----------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
二:文件下载:
文件下载通常有两种方式实现: 1,通过超链接点击下载实现,2.通过程序编码实现
程序编码实现有很多种方法,都不简单,此文介绍较简单的超链接实现下载
1.文件上传后,跳转前端页面后,点击此超链接,
链接:
<a href="${pageContext.request.contextPath}/download/${filename}">下载</a><br>
2.然后controller处理如下:
注意文件下载的controller中的方法中,获取路径参数的注解@PathVariable可能会导致文件名中后缀消失,导致空指针异常,详见PathVariable注解导致文件后缀消失-CSDN博客
3.然后点击下载链接
然后就会弹出下载对话框
三.异步文件上传
有时我们希望文件上传成功后不跳转页面,而是留在当前页面,这种时候就需要通过ajax或者axios实现异步文件上传,
现在也是模拟上传图片到项目服务器下的uploadfiles目录,
1.前端代码:
2.通过axios发送请求
3.controller控制器代码:
文件上传还有多种跨服务器文件上传,不详细介绍。
个人学习总结,如有错误和不足,感谢指正