验证码和简单文件上传与下载

① 验证码

使用万能工具包生成验证码图片

  1. 生成验证码图片
    Captcha cp = CatpchaUtil.createLineCaptcha(长度,宽度);
  2. 得到验证码值
    String code = cp.getCode();
  3. 将图片通过响应流输出(硬盘 浏览器)
    cp.write(目标文件 输出流)

示例代码:
在这里插入图片描述
书写生成验证码的控制器Controller
在这里插入图片描述
核心思路:
在这里插入图片描述

② 文件上传

开启文件上传的解析器:

  1. 导入文件上传的jar
  2. 注册文件上传的解析器
    在这里插入图片描述

文件上传的控制器Controller:

  1. 方法声明MultipartFile: 方法参数名和file输入的name要一致
  2. 获得文件名: file.getOriginalFilename() ;
  3. 获得文件大小: file.getSize();

页面的设置:
在这里插入图片描述
保存文件:

  1. 方法
    MuiltpartFile.transferTo(文件路径);
  2. 如何获得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;

	}

文件管理的细节设计(下载)

① 思考细节

  1. 保存文件: 保存的文件的名字命名冲突,文件覆盖?
    设计一个一定不会重复的文件名: UUID.randomUUID().toString();
  2. 文件信息【存储在数据库】
    在这里插入图片描述
  3. 文件名处理获得后缀
    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的基本使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值