① 验证码
使用万能工具包生成验证码图片
- 生成验证码图片
Captcha cp = CatpchaUtil.createLineCaptcha(长度,宽度); - 得到验证码值
String code = cp.getCode(); - 将图片通过响应流输出(硬盘 浏览器)
cp.write(目标文件 输出流)
示例代码:
书写生成验证码的控制器Controller
核心思路:
② 文件上传
开启文件上传的解析器:
- 导入文件上传的jar
- 注册文件上传的解析器
文件上传的控制器Controller:
- 方法声明MultipartFile: 方法参数名和file输入的name要一致
- 获得文件名: file.getOriginalFilename() ;
- 获得文件大小: file.getSize();
页面的设置:
保存文件:
- 方法
MuiltpartFile.transferTo(文件路径); - 如何获得tomcat内部的保存路径
String realPath = ServletContext.getRealPath("/项目名下的文件夹名");
总结:
@RequestMapping("/update")
public @ResponseBody Map update(MultipartFile uploadFile, HttpSession session, User user) throws IOException {
if (uploadFile != null && uploadFile.getOriginalFilename() != "") {
//获取到真正的文件的名称
String realName = uploadFile.getOriginalFilename();
//上传时产生不同的文件名,避免覆盖
String saveName = UUID.randomUUID().toString();
//获取文件的后缀
String substring = realName.substring(realName.indexOf("."));
//拼接保存到硬盘上的路径
String path = session.getServletContext().getRealPath("/picture");
uploadFile.transferTo(new File(path + "/userpicture" + "/" + saveName + substring));
user.setUserImage("/userpicture/" + saveName + substring);
}
Map map = new HashMap();
try {
userService.update(user);
map.put("update", "200");
} catch (Exception e) {
e.printStackTrace();
map.put("update", "500");
}
return map;
}
文件管理的细节设计(下载)
① 思考细节
- 保存文件: 保存的文件的名字命名冲突,文件覆盖?
设计一个一定不会重复的文件名: UUID.randomUUID().toString(); - 文件信息【存储在数据库】
- 文件名处理获得后缀
fileName.substring(fileName.lastIndexOf("."));
② 实现思路
文件上传 + 文件信息展示
③ 文件下载
思路:
编码实现:
@RequestMapping("/insert")
public @ResponseBody Map insert(MultipartFile uploadFile, HttpSession session, User user){
Map map = new HashMap();
try {
String name = UUID.randomUUID().toString();
String path = session.getServletContext().getRealPath("/picture/userpicture");
String substring = uploadFile.getOriginalFilename().substring(uploadFile.getOriginalFilename().indexOf(".") + 1);
path = path + "/" + name + "." + substring;
uploadFile.transferTo(new File(path));
user.setUserImage("/userpicture/" + name + "." + substring);
System.out.println("******"+user+"*****");
userService.insert(user);
map.put("insert", "200");
} catch (Exception e) {
e.printStackTrace();
map.put("insert", "500");
}
return map;
}
④ 配置文件总结(MVC.xml)
上一篇:自定义类型转换器
下一篇:Ajax与Json的基本使用