-
基于apache的commons-fileupload.jar完成文件上传
-
MultipartResolver作用:
2.1. 把客户端才上传的文件流转成MultipartFile封装类
2.2. 通过MultipartFile封装类获取文件流 -
表单数据类型分类
3.1. 在<form>的enctype属性控制表单类型
3.2默认值application/x-www-form-urlencoded,普通表单数据(少量文字信息)。
3.3. text/plain大文字量时使用的类型。例如上传邮件、论文等情况(最大2GB)
3.4. multipart/form-data表单中包含二进制文件内容 -
实现步骤
4.1 导入SpringMVC 包和Apache文件上传commons-fileupload和commons-io两个jar
4.2 编写jsp
<form action="upload" enctype="multipart/form-data" method="post">
输入<input type="text" name="name"/><br/>
文件<input type="file" name="fileName"/><br/>
<input type="submit" value="登录"/>
</form>
4.3 编写控制器类
@RequestMapping("upload")
public String upload(MultipartFile fileName, String name) throws IOException {
System.out.println("name:" + name);
MultipartResolver mr = null;
//FileUtils.copyFile(file, destFile);
//获取上传文件的文件名,不同浏览器不同,有的为全路径,有的只有文件名
String originalFilename = fileName.getOriginalFilename();
String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
//判断上传类型
if(fileType.equalsIgnoreCase(".png")) {
//生成随机id,保证文件名不重复
String uuid = UUID.randomUUID().toString();
FileUtils.copyInputStreamToFile(fileName.getInputStream(), new File("D:/测试上传/" + uuid + fileType));
return "index";
} else {
return "error2";
}
}