- <form action="/test.do?method=upload" method="post" enctype="multipart/form-data">
- 用户名:<input type="text" name="username"><br>
- 密码:<input type="password" name="password"><br>
- 头像:<input type="file" name="headerPhoto"><br>
- <input type="submit" value="立即提交">
- form>
- public String upload(HttpServletRequest req, HttpServletResponse resp) throws Exception {
- // 判断请求是否存在文件内容(true:上传操作)
- if (ServletFileUpload.isMultipartContent(req)) {
- // 1.创建servletFileUpload对象,完成文件上传操作
- ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
- // 限制上传文件大小
- upload.setSizeMax(100*1024*1024);
- // 2.解析请求:获取所有表单控件附带数据
- List
fileItems = upload.parseRequest(req); - // 3.遍历fileItem集合,判断每一个fileItem的类型
- // 是文件:进行文件上传处理
- // 不是文件:获取其内容即可
- for (FileItem fileItem : fileItems) {
- // 判断是否是普通表单字段
- if (fileItem.isFormField()) {
- // 获取表单字段name属性值
- String fieldName = fileItem.getFieldName();
- // 获取表单字段value属性值
- String value = fileItem.getString("UTF-8");
- }
- // 文件字段:开始完成上传操作
- else{
- // 设定上传后文件存储位置
- String path="D:\\files";
- // 避免文件同名问题:设唯一编码
- // 获取上传文件原始名称
- String originFileName = fileItem.getName();
- // 获取上传文件的格式
- String saveFileType = originFileName.substring(originFileName.lastIndexOf("."));
- // 生成上传文件存储唯一名称
- String saveFileName = UUID.randomUUID().toString().replace("-","");
- // 创建存储上传文件内容的文件
- File saveFile = new File(path, saveFileName + saveFileType);
- // 将fileItem中的文件内容写入到存储的文件中
- fileItem.write(saveFile);
- }
- }
- // 不是文件上传:正常处理
- }else{}
- }
注意:前后端分离时,上传文件存储的位置要存储到Hbuilder中你的项目中图片存储路径,上传成功后,要将图片存储路径返回给前端
- <img id="headerImg" src="../images/xxx.jpg" width="80" height="80"/>
- <input type="file" id="header" />
- <input type="button" id="btn" value="修改头像" />
-
- <script>
- $(function () {
- $("#btn").click(function () {
- var formData=new FormData();
- var files = $("#header").prop("files");
- formData.append("header",files[0])
- $.ajax({
- url:"http://localhost:8080/test.do?method=upload",
- data:formData,
- type:"post",
- dataType:"json",
- cache:false,
- processData:false,
- contentType:false,
- async:false,
- success:function(resp){
- // 成功回调后修改图片路径
- $("#headerImg").attr("src","../images/"+resp.data)
- }
- })
- })
- })
- script>
- public void upload(HttpServletRequest req, HttpServletResponse resp) throws Exception {
- // 判断请求是否存在文件内容(true:上传操作)
- if (ServletFileUpload.isMultipartContent(req)) {
- // 1.创建servletFileUpload对象,完成文件上传操作
- ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
- // 限制上传文件大小
- upload.setSizeMax(100*1024*1024);
- // 2.解析请求:获取所有表单控件附带数据
- List
fileItems = upload.parseRequest(req); - // 设定上传后文件存储位置
- String path="E:\\78\\img";
- for (FileItem fileItem : fileItems) {
- // 判断是否是普通表单字段
- if (!fileItem.isFormField()) {
- // 获取名称
- String originFileName = fileItem.getName();
- // 获取上传文件的格式
- String saveFileType = originFileName.substring(originFileName.lastIndexOf("."));
- // 生成上传文件的存储唯一名称
- String saveFileName = UUID.randomUUID().toString().replace("-", "");
- // 创建存储上传文件内容的文件
- File saveFile = new File(path, saveFileName + saveFileType);
- // 将fileItem中的文件内容写入到存储的文件中
- fileItem.write(saveFile);
- // 返回前端文件名和类型信息
- resp.getWriter().write(Result.success(200, "上传成功", saveFileName + saveFileType).toString());
- }
- }
- }else {
- resp.getWriter().write(Result.success(200, "上传失败", null).toString());
- }
- }
MD5是一种加密算法
加密过程不可逆
同个数据,无论进行多少次加密操作,得到的结果永远相同
- public class CommonsUtil {
- public static String md5(String password){
- try {
- // 基于加密算法获取加密对象
- MessageDigest md5 = MessageDigest.getInstance("MD5");
- // 执行加密操作
- byte[] bytes = md5.digest(password.getBytes());
- // 将加密后的byte[]转换为字符串返回
- return Base64.getEncoder().encodeToString(bytes);
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException(e);
- }
- }
- }
方便程序员在java应用中进行邮件的相关操作而封装的一套api
邮件协议:邮件协议是TCP协议簇下的一部分
pop3:发送邮件
imap:接收邮件
smtp:既可接,也可发

Message:描述一封邮件,java官方推荐使用子类MimeMessage
Session:指定发送邮件的环境信息,构建MimeMessage对象时,需要使用该类的对象
Transport:发送邮件的对象,该类中的静态方法send()用于发送邮件。
配置准备:
导入javamail依赖
选择一个邮件服务器(163),在服务器中通过设置去开启允许java应用程序使用邮件服务器发送邮件的功能
编写代码
- // 1.创建一封邮件
- Properties pros = new Properties();
- // 设置发送邮件使用的协议
- pros.setProperty("mail.transport.protocol","SMTP");
- // 设置发送邮件使用的邮件服务器
- pros.setProperty("mail.host","smtp.163.com");
- // 是否要进行验证
- pros.setProperty("mail.smtp.auth","true");
- Session session = Session.getInstance(pros, new Authenticator() {
- @Override
- protected PasswordAuthentication getPasswordAuthentication() {
- // 参数1:邮箱帐号
- // 参数2:授权密码
- return new PasswordAuthentication("xxx.@xxx.com","xxx");
- }
- });
- MimeMessage message = new MimeMessage(session);
- //设置邮件内容
- message.setContent("xxx","text/html;charset=utf-8");
- // 设置发送者
- message.setFrom(new InternetAddress("xxx.@xxx.com"));
- // 设置邮件接收者
- message.setRecipient(Message.RecipientType.TO,new InternetAddress("yyy.@yyy.com"));
- //设置邮件标题
- message.setSubject("XXX");
- Transport.send(message);