1. 使用Spring-MVC框架实现文件上传
相信在学习过javaweb阶段的小伙伴都知道 , 当我们需要使用javaweb原生代码实现文件上传及下载都非常的麻烦。需要大量的的代码来对他进行实现 , 而spring-Mvc框架帮助我们实现了这个功能 , 只需要简单的几步即可实现对文件的上传 , 接下来就给大家介绍一下 。
使用Spring-MVC 框架实现文件的上传 , 只需要一下三步即可
- 导入fileupload和io坐标
- 配置文件上传解析器
- 编写文件上传代码
接下来对 以上三个步骤进行依次实现
- 首先第一步导入fileupload和io坐标(这里我使用的是maven项目结构所以在pom.xml中导入)
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
- 配合文件上传解析器 (在Spring-MVC.xml)中进行配置
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--指定字符集编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!--设置最大上传文件的大小 -->
<property name="maxUploadSize" value="1024000"></property>
</bean>
- 在这里要特别注意的是这个bean标签的id 必须是为固定的
multipartResolver
, 否则在后期的
实现中后端代码就无法接受到前端上传的文件
- 编写文件上传代码
@RequestMapping(value="/quick21")
@ResponseBody //接受的前端的值 (username) //以及前端上传的文件为uploadFile
public void save19(String username , MultipartFile uploadFile) throws IOException {
//将获取到的前端上传的字符串及文件地址打印出来
System.out.println(username);
System.out.println(uploadFile);
}
在后端代码编写完毕后 , 就可以进行对前台代码的编写
<html>
<head>
<title>上传文件</title>
</head>
<body>
<form action="user/quick21" method="post" enctype="multipart/form-data">
名称<input type="text" name="username" > <br />
文件 <input type="file" name="uploadFile" > <br />
<input type="submit" value="提交">
</form>
</body>
</html>
有小伙伴可能会发现,在这里我使用使用了一个from表单中不常出现的属性 enctype ,enctype就是encodetype就是编码类型的意思。multipart/form-data是指表单数据有多部分构成,既有文本数据,又有文件等二进制数据的意思。
需要注意的是:默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据。
application/x-www-form-urlencoded不是不能上传文件,是只能上传文本格式的文件,multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。
原文链接:https://blog.csdn.net/lingxiyizhi_ljx/article/details/102514560
代码编写完成后 , 打开前端页面 , 会看到我们定义的表单项里面的内容 , 当我们点击了选择文件的按钮 , 他就会自动弹出对话框 , 只要选择你需要上传的文件即可 , 然后在点击提交按钮 , 即可将我们所需要上传的文件 提交到后台
在后端控制台我们就可以看到 打印出相应的从前端传过来的用户名及上传文件的地址,说明文件上传成功