一、前言
(一)文件上传的必要前提
1 | A form 表单的 enctype 取值必须是: multipart/form-data |
(二)文件上传的原理分析
1 | 当 form 表单的 enctype 取值不是默认值后, request.getParameter()将失效。 |
二、传统方式实现文件上传
(一)说明
1 | 传统方式的文件上传, 指的是我们上传的文件和访问的应用存在于同一台服务器上。 |
(二)需要借助的第三方组件
使用 Commons-fileupload 组件实现文件上传,需要导入该组件相应的支撑 jar 包: Commons-fileupload 和
commons-io。 commons-io 不属于文件上传组件的开发 jar 文件,但Commons-fileupload 组件从 1.1 版本开始,它
工作时需要 commons-io 包的支持。
1 | <dependency> |
(三)实现代码
jsp代码:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
controller代码:
1 |
|
三、SpringMVC传统方式实现文件上传
(一)导入依赖
1 | <dependency> |
(二)代码实现
jsp代码:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
controller代码:
1 |
|
配置文件解析器:
需要在springmvc.xml配置文件中配置文件解析器
1 |
|
(三)注意事项
1、在上述配置中,第22行的 id 名称必须为:multipartResolver;
2、在controller代码的第9行,方法中的 MultipartFile 形参的参数名称必须和 jsp 中输入项的 name 属性值一样。如:
1 | 选择文件:<input type="file" name="upload"> <br/> |
1 | public String fileUpload02(HttpServletRequest request, MultipartFile upload) throws IOException {} |
四、SpringMVC跨服务器实现文件上传
(一)分服务器的目的
在实际开发中,我们会有很多处理不同功能的服务器。例如:
应用服务器:负责部署我们的应用
数据库服务器:运行我们的数据库
缓存和消息服务器:负责处理大并发访问的缓存和消息
文件服务器:负责存储用户上传文件的服务器。
(注意:此处说的不是服务器集群)
分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率
(二)前期准备
准备两个Tomcat服务器,和一个用于存储文件的web工程即可。
注:用于存储文件的Tomcat需要在web.xml中将readonly参数设置为false。
(三)导入依赖
1 | <dependency> |
1 | <dependency> |
(四)代码实现
jsp代码:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
controller代码:
1 |
|
配置文件解析器:
1 | <!--配置文件解析器对象--> |
Java新手,若有错误,欢迎指正!