spring-mvc实现网页文件上传
Posted 子璟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-mvc实现网页文件上传相关的知识,希望对你有一定的参考价值。
1 文件上传
1.1 表单要求【注意】
要求1:表单必须是post请求
要求2:form标签必须有enctype="multipart/form-data"
要求3:必须要有文件上传项,type="file"
<form action="uploadController/upload" method="post" enctype="multipart/form-data">
<!--文件上传表单的name属性值一定要与controller处理器中方法的参数对应,否则无法实现文件上传-->
上传LOGO:<input type="file" name="files"/><br/>
上传照片:<input type="file" name="files"/><br/>
上传任意文件:<input type="file" name="files"/><br/>
<input type="submit" value="上传"/>
</form>
1.2 Spring MVC文件上传步骤
【第一步】:导入commons-fileupload依赖
【第二步】:在spring-mvc.xml中配置CommonsMultipartResovler解析器
【第三步】:在Controller中编写方法接收实现文件上传
【第一步】:导入commons-fileupload依赖
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
【第二步】:在spring-mvc.xml中配置CommonsMultipartResovler解析器
<!--
配置文件上传解析器
id固定值是:multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传的所有文件的最大大小,最大100m-->
<property name="maxUploadSize" value="104857600"/>
<!--上传的单个文件大小,最大10m-->
<property name="maxUploadSizePerFile" value="10485760"/>
<!--中文文件名编码-->
<property name="defaultEncoding" value="utf-8"/>
</bean>
【第三步】:在Controller中编写方法接收实现文件上传
@Controller
@RequestMapping("/uploadController")
public class UploadController {
@RequestMapping("/upload")
@ResponseBody
public void doUpload(MultipartFile[] files, HttpServletRequest request) throws IOException {
//System.out.println(file.getSize());//获取文件大小
//System.out.println(file.isEmpty()); //是否是空文件
//System.out.println(file.getBytes().length); //获取文件字节数组的大小,和size一样
//System.out.println(file.getOriginalFilename()); //文件名:头图 (2).jpg
//System.out.println(file.getName()); // 表单的name属性
//将上传的文件保存到服务器硬盘中
if(files!=null && files.length>0){
for (MultipartFile multipartFile : files) {
//1 获取上传的目录
String realPath = request.getServletContext().getRealPath("/upload");
//2 生成唯一的文件名
//2.1 获取到原始文件名
String filename = multipartFile.getOriginalFilename();
//2.2 生成唯一UUID
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
//2.3 获取文件的后缀名
String suffix=filename.substring(filename.lastIndexOf(".")); //.jpg
//2.4 组合成新的文件名
filename=uuid+suffix;
//3 保存到目录中
multipartFile.transferTo(new File(realPath,filename));
}
}
}
}
注意事项
问题1:上传多个文件如何接收?
问题2:如何解决文件重名问题?
注意事项:
以上是关于spring-mvc实现网页文件上传的主要内容,如果未能解决你的问题,请参考以下文章
python使用selenium模拟点击网页实现自动导入上传文件功能