1文件上传客户端三要素
- 表单项type="file" (设置按钮是上传文件按钮)
- 表单提交方式设置成post(get方式有文件最大限制二进制流最大是255所以图片不可以使用post)
- 表单enctype属性是多级表单形式,及enctype="multipart/form-data"
2文件上传原理
- 放from表单修改为多部分表单时,request.getParamenter()将失效
- enctype="application/x-www-from-urlencoded"时,from表单的正文内容格式是:key=value&key=value
- 当from表单的enctype取值为Mutilpart/from-data时,请求正文就变成多部分形式。
3实现步骤
1导入jar包(maven)
<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.1</version>
</dependency>
2配置文件上传解析器
(注意这里id必须是multipartResolver不然接收到的文件会是null)
(注意这里id必须是multipartResolver不然接收到的文件会是null)
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 文件上传总大小-->
<property name="maxUploadSize" value="5242800"/>
<!-- 上产单个文件的大小-->
<property name="maxUploadSizePerFile" value="5242800"/>
<!-- 文件上传编码类型-->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
3编写文件上传代码
这里我是在D盘新建了一个文件,你们可以在自己目录下,也可以放在tomcat目录下,服务器目录下。
@RequestMapping("/addAppInfo")
public String add(AppInfo appInfo, MultipartFile imgesIo) throws IOException {
System.out.println(appInfo.getAPKName());
String originalFilename = imgesIo.getOriginalFilename();
//文件去的地址
imgesIo.transferTo(new File("D:\\img\\"+originalFilename));
// appInfoMapper.addAppInfo(appInfo);
return "redirect:../index.jsp";
}
如上操作
文件和图片都可以上传(注意设置大小)。
文件内容也是会跟着过来的(演示文件)
打开之后文件内容都在,可以进行修改操作。