spring mvc 真的做了很多的东西,用起来很简单,但是如果学习使用,建议servlet
- 在springmvc.xml中配置
<!--文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置编码请求格式-->
<property name="defaultEncoding" value="UTF-8" />
</bean>
- 传文件的示例代码
/*
* 文件上传
* */
@Controller
public class FileUploadController {
// 上传文件存储目录
private static final String UPLOAD_DIRECTORY = "upload";
/*
* 执行文件上传
* */
@RequestMapping("fileUpload")
public String handleFormUpload(@RequestParam("name") String name,
@RequestParam("uploadFiles") List<MultipartFile> uploadFiles,
HttpServletRequest httpRequest) {
//判断上传文件是否存在
System.out.println(name);
System.out.println(uploadFiles);
if(!uploadFiles.isEmpty() && uploadFiles.size()>0){
//循环输出上传的文件
for(MultipartFile file : uploadFiles){
//获取上传文件的原始名称
String originalFilename = file.getOriginalFilename();
file.getSize();
//设置上传文件的保存地址目录
String dirPath = httpRequest.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY + File.separator + name +File.separator;
String relactivepath = File.separator + UPLOAD_DIRECTORY + File.separator + name +File.separator;
File filepath = new File(dirPath);
//如果保存文件的地址不存在,就先创建目录
if(!filepath.exists()){
filepath.mkdirs();
}
//使用 UUID 重新名命上传的文件名称 (上传人_uuid_原始文件名称)
String newFilename = name + "_" + UUID.randomUUID() + "_" + originalFilename;
try {
//使用 MutipartFile 接口的方法完成文件上传到指定位置
file.transferTo(new File(dirPath+newFilename));
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
//跳转到成功界面
return "success";
}else {
return "error";
}
}
}