【JAVA企业级开发】在JAVA生产项目中的关于实现单文件上传功能模块,多文件上传功能模块的优化方法以及用户上传文件成功之后的自动给用户发送邮件提醒的实现过程

一SpringBOOT

1配置文件application.properties

#配置单文件上传最大值
spring.servlet.multipart.max-file-size=66MB
#配置多文件请求上传最大值
spring.servlet.multipart.max-request-size=666MB

2dao层

package baobaobaobao.dao;

import baobaobaobao.entity.FilePath;

import java.util.List;

/**
 * Created by @author LiuChunhang on 2020/6/23.
 */
public interface FilePathMapper {
    //记录文件信息
    int  picture(FilePath filePath);
    //验证查库
    List<String > path();

}

3service层

package baobaobaobao.service;

import baobaobaobao.entity.FilePath;

import java.util.List;

/**
 * Created by @author LiuChunhang on 2020/6/23.
 */
public interface FilePathServiceFace {
   /**记录文件信息*/
     int  picture(FilePath filePath);
    List<String> path();

}

package baobaobaobao.service;

import baobaobaobao.dao.FilePathMapper;
import baobaobaobao.entity.FilePath;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by @author LiuChunhang on 2020/6/23.
 */
@Service
public class FilePathService implements  FilePathServiceFace {
    @Autowired
    public FilePathMapper filePathMapper;

    public FilePathMapper getFilePathMapper() {
        return filePathMapper;
    }

    public void setFilePathMapper(FilePathMapper filePathMapper) {
        this.filePathMapper = filePathMapper;
    }

    @Override
    public int picture(FilePath filePath) {
        int picture = filePathMapper.picture(filePath);
        return picture;
    }

    @Override
    public List<String> path() {
        List<String> path = filePathMapper.path();
        return path;
    }
}

4 tool层实现邮件功能并且实现service层

package baobaobaobao.tool;

import baobaobaobao.entity.FilePath;
import baobaobaobao.service.FilePathServiceFace;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * Created by @author LiuChunhang on 2020/6/11.
 */
@Component
public class Jmail {
    @Autowired
    public FilePathServiceFace filePathService;

    public FilePathServiceFace getFilePathService() {
        return filePathService;
    }

    public void setFilePathService(FilePathServiceFace filePathService) {
        this.filePathService = filePathService;
    }
    public  void picture(FilePath  filePath){
        filePathService.picture(filePath);
    }
    //linux服务器必须开启25端口
    public  void mail() throws MessagingException {
        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.qq.cm");  设置QQ邮件服务器
        prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
        prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码
        prop.setProperty("mail.smtp.ssl.enable", "true");
        prop.setProperty("mail.smtp.port", "465");
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            public javax.mail.PasswordAuthentication getPasswordAuthentication() {
                //发件人邮件用户名、授权码
                return new PasswordAuthentication("pulloxen@qq.com", "huzqsmnaksiiheii");
            }
        });
        //2、通过session得到transport对象
        Transport ts = session.getTransport();
        //3、使用邮箱的用户名和授权码连上邮件服务器
        ts.connect("smtp.qq.com", "pulloxen@qq.com", "huzqsmnaksiiheii");//注意一定要填写授权码,不是登录邮箱的密码
        //4、创建邮件
        //创建邮件对象
        MimeMessage message = new MimeMessage(session);
        //指明邮件的发件人
        message.setFrom(new InternetAddress("pulloxen@qq.com"));
        //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("3593159816@qq.com"));
        //邮件的标题
        message.setSubject("今日打卡");
        //邮件的文本内容
        message.setContent("亲爱的猪猪,今日打卡完成,明天继续加油哦!", "text/html;charset=UTF-8");
        ts.sendMessage(message, message.getAllRecipients());
        System.out.println("发送邮件成功");
        ts.close();
    }
}


二单文件上传

1 前端

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/6/15
  Time: 0:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>ProCute</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="css/style.css" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<script language='Javascript'>
    <!--
    document.write(unescape('%09%3C%64%69%76%20%69%64%3D%22%77%72%61%70%70%65%72%22%3E%0A%09%09%3C%68%31%3E%43%6F%6D%70%61%6E%79%20%4E%61%6D%65%3C%2F%68%31%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%63%6F%6D%70%61%6E%79%20%2F%20%77%65%62%73%69%74%65%20%6E%61%6D%65%20%2D%2D%3E%0A%09%09%3C%64%69%76%20%69%64%3D%22%66%6F%6C%6C%6F%77%22%3E%0A%09%09%09%3C%21%2D%2D%3C%73%70%61%6E%3E%46%6F%6C%6C%6F%77%20%75%73%3C%2F%73%70%61%6E%3E%2D%2D%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%66%61%63%65%62%6F%6F%6B%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%46%61%63%65%62%6F%6F%6B%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%66%62%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%74%77%69%74%74%65%72%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%54%77%69%74%74%65%72%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%74%77%69%74%74%65%72%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%70%6C%75%73%2E%67%6F%6F%67%6C%65%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%47%6F%6F%67%6C%65%20%50%6C%75%73%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%67%70%6C%75%73%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%6C%69%6E%6B%65%64%69%6E%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%4C%69%6E%6B%65%64%69%6E%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%6C%69%6E%6B%65%64%69%6E%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%64%72%69%62%62%62%6C%65%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%44%72%69%62%62%62%6C%65%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%64%72%69%62%62%62%6C%65%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%3C%2F%64%69%76%3E%3C%21%2D%2D%20%65%6E%64%20%66%6F%6C%6C%6F%77%20%2D%2D%3E%0A%09%09%3C%64%69%76%20%69%64%3D%22%6F%70%70%73%22%3E%4F%70%70%73%21%20%54%68%69%73%20%73%69%74%65%20%69%73%20%63%75%72%72%65%6E%74%6C%79%20%75%6E%64%65%72%20%63%6F%6E%73%74%72%75%63%74%69%6F%6E%2E%3C%2F%64%69%76%3E%0A%09%09%3C%64%69%76%20%69%64%3D%22%62%6F%74%74%6F%6D%22%3E%0A%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6C%65%66%74%22%3E%0A%09%09%09%09%3C%68%32%3E%45%73%74%69%6D%61%74%65%64%20%74%69%6D%65%20%62%65%66%6F%72%65%20%6C%61%75%6E%63%68%3C%2F%68%32%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%63%6F%75%6E%74%64%6F%77%6E%22%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%64%61%79%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%44%61%79%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%68%6F%75%72%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%48%6F%75%72%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6D%69%6E%75%74%65%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%4D%69%6E%75%74%65%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%73%65%63%6F%6E%64%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%53%65%63%6F%6E%64%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%3C%2F%64%69%76%3E%3C%21%2D%2D%20%65%6E%64%20%63%6F%75%6E%74%64%6F%77%6E%20%2D%2D%3E%0A%09%09%09%3C%2F%64%69%76%3E%3C%21%2D%2D%20%65%6E%64%20%6C%65%66%74%20%2D%2D%3E'));
    //-->
</script>
<div>
    <h2>每日打卡</h2>
    <form action="${pageContext.request.contextPath}/fileup" enctype="multipart/form-data" method="post" />
    <fieldset>
        <input type="file" name="file"  multiple="multiple"/>
        <button type="submit" name="submit">Submit</button>
    </fieldset>
    </form>
    <div id="message">
    </div><!-- end message -->
</div><!-- end right -->
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="js/countdown.jquery.js"></script>
<script language='Javascript'>
    <!--
    document.write(unescape('%09%3C%73%63%72%69%70%74%3E%0A%09%09%24%28%66%75%6E%63%74%69%6F%6E%28%29%20%7B%0A%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%27%29%2E%63%6F%75%6E%74%64%6F%77%6E%28%7B%64%61%74%65%3A%20%27%32%35%20%44%65%63%65%6D%62%65%72%20%32%30%31%38%20%30%30%3A%30%30%3A%30%30%27%7D%2F%2A%2A%2A%20%53%65%74%20%77%65%62%73%69%74%65%20%6C%61%75%6E%63%68%20%64%61%74%65%20%61%6E%64%20%74%69%6D%65%20%2A%2A%2A%2F%2C%20%66%75%6E%63%74%69%6F%6E%28%29%7B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%64%61%79%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%68%6F%75%72%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%6D%69%6E%75%74%65%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%73%65%63%6F%6E%64%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09%24%28%22%66%6F%72%6D%20%69%6E%70%75%74%22%29%2E%66%6F%63%75%73%28%66%75%6E%63%74%69%6F%6E%28%29%7B%0A%09%09%09%09%24%28%74%68%69%73%29%2E%63%73%73%28%22%62%61%63%6B%67%72%6F%75%6E%64%22%2C%20%22%23%62%34%64%63%62%61%22%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09%24%28%22%66%6F%72%6D%20%69%6E%70%75%74%22%29%2E%62%6C%75%72%28%66%75%6E%63%74%69%6F%6E%28%29%7B%0A%09%09%09%09%69%66%20%28%21%28%24%28%74%68%69%73%29%2E%76%61%6C%28%29%29%29%7B%0A%09%09%09%09%09%24%28%74%68%69%73%29%2E%63%73%73%28%22%62%61%63%6B%67%72%6F%75%6E%64%22%2C%20%22%75%72%6C%28%69%6D%61%67%65%73%2F%70%6C%61%63%65%68%6F%6C%64%65%72%2E%70%6E%67%29%20%6E%6F%2D%72%65%70%65%61%74%20%63%65%6E%74%65%72%20%23%62%34%64%63%62%61%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%3B%0A%09%09%7D%29%3B%0A%09%3C%2F%73%63%72%69%70%74%3E'));
    //-->
</script>

</body>
</html>

2 后端

package baobaobaobao.controller;

import baobaobaobao.entity.FilePath;
import baobaobaobao.tool.Jmail;
import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.mail.MessagingException;
import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * 文件上传
 */
@Controller
public class FileController {
    @Autowired
    public Jmail jmail;

    public Jmail getJmail() {
        return jmail;
    }

    public void setJmail(Jmail jmail) {
        this.jmail = jmail;
    }
    @GetMapping(value = "/file")
    public String file() {
        return "WEB-INF/fileup";
    }

    //官方默认上传文件的请求方式是post
    @PostMapping(value = "/fileup")
    public String fileUpload(@RequestParam(value = "file") MultipartFile file, Model model, HttpServletRequest request) throws MessagingException {
        if (file.isEmpty()) {
            System.out.println("文件为空空");
        }
        // 文件名
        String fileName = file.getOriginalFilename();
        System.out.println(fileName);
        // 后缀
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        System.out.println(suffixName);
        // 上传后的路径
        //String filePath = request.getSession().getServletContext().getRealPath("shuang/");
        // 新文件名
        String filePath="/root/picture/";
        //String filePath="E:\\JavaWorkSpace\\";
        String name = new Date().toString().substring(0,11) + suffixName;
        System.out.println();
        File dest = new File(filePath+ name);
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //String filename = "/shuang/" + fileName;
        FilePath p = new FilePath(fileName,new Date().toString());
        //文件位置和信息入库
        jmail.picture(p);
        model.addAttribute("filename", fileName);
        jmail.mail();
        System.out.println("邮件发送成功");
        return "WEB-INF/email";
    }}

三多文件上传

1前端

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/6/15
  Time: 0:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <title>ProCute</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="css/style.css" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<script language='Javascript'>
    <!--
    document.write(unescape('%09%3C%64%69%76%20%69%64%3D%22%77%72%61%70%70%65%72%22%3E%0A%09%09%3C%68%31%3E%43%6F%6D%70%61%6E%79%20%4E%61%6D%65%3C%2F%68%31%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%63%6F%6D%70%61%6E%79%20%2F%20%77%65%62%73%69%74%65%20%6E%61%6D%65%20%2D%2D%3E%0A%09%09%3C%64%69%76%20%69%64%3D%22%66%6F%6C%6C%6F%77%22%3E%0A%09%09%09%3C%21%2D%2D%3C%73%70%61%6E%3E%46%6F%6C%6C%6F%77%20%75%73%3C%2F%73%70%61%6E%3E%2D%2D%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%66%61%63%65%62%6F%6F%6B%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%46%61%63%65%62%6F%6F%6B%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%66%62%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%74%77%69%74%74%65%72%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%54%77%69%74%74%65%72%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%74%77%69%74%74%65%72%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%70%6C%75%73%2E%67%6F%6F%67%6C%65%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%47%6F%6F%67%6C%65%20%50%6C%75%73%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%67%70%6C%75%73%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%6C%69%6E%6B%65%64%69%6E%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%4C%69%6E%6B%65%64%69%6E%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%6C%69%6E%6B%65%64%69%6E%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%09%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77%2E%64%72%69%62%62%62%6C%65%2E%63%6F%6D%22%3E%20%3C%21%2D%2D%20%53%65%74%20%79%6F%75%72%20%44%72%69%62%62%62%6C%65%20%55%52%4C%20%2D%2D%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%64%72%69%62%62%62%6C%65%22%3E%3C%2F%64%69%76%3E%0A%09%09%09%3C%2F%61%3E%0A%09%09%3C%2F%64%69%76%3E%3C%21%2D%2D%20%65%6E%64%20%66%6F%6C%6C%6F%77%20%2D%2D%3E%0A%09%09%3C%64%69%76%20%69%64%3D%22%6F%70%70%73%22%3E%4F%70%70%73%21%20%54%68%69%73%20%73%69%74%65%20%69%73%20%63%75%72%72%65%6E%74%6C%79%20%75%6E%64%65%72%20%63%6F%6E%73%74%72%75%63%74%69%6F%6E%2E%3C%2F%64%69%76%3E%0A%09%09%3C%64%69%76%20%69%64%3D%22%62%6F%74%74%6F%6D%22%3E%0A%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6C%65%66%74%22%3E%0A%09%09%09%09%3C%68%32%3E%45%73%74%69%6D%61%74%65%64%20%74%69%6D%65%20%62%65%66%6F%72%65%20%6C%61%75%6E%63%68%3C%2F%68%32%3E%0A%09%09%09%09%3C%64%69%76%20%69%64%3D%22%63%6F%75%6E%74%64%6F%77%6E%22%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%64%61%79%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%44%61%79%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%68%6F%75%72%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%48%6F%75%72%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6D%69%6E%75%74%65%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%4D%69%6E%75%74%65%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%74%69%6D%65%42%6F%78%22%3E%0A%09%09%09%09%09%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%73%65%63%6F%6E%64%73%22%3E%30%30%3C%2F%64%69%76%3E%0A%09%09%09%09%09%09%53%65%63%6F%6E%64%73%0A%09%09%09%09%09%3C%2F%64%69%76%3E%0A%09%09%09%09%3C%2F%64%69%76%3E%3C%21%2D%2D%20%65%6E%64%20%63%6F%75%6E%74%64%6F%77%6E%20%2D%2D%3E%0A%09%09%09%3C%2F%64%69%76%3E%3C%21%2D%2D%20%65%6E%64%20%6C%65%66%74%20%2D%2D%3E'));
    //-->
</script>
<div>
    <h2>每日打卡(:单词,:短文)</h2>
    <form action="${pageContext.request.contextPath}/Manyfileup" enctype="multipart/form-data" method="post" />
    <fieldset>
        <input type="file" name="files" multiple="multiple"/>
 <%--       <input type="file" name="files" multiple="multiple"/>--%>
        <button type="submit" name="submit">Submit</button>
    </fieldset>
    </form>
    <div id="message">
    </div><!-- end message -->
</div><!-- end right -->
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="js/countdown.jquery.js"></script>
<script language='Javascript'>
    <!--
    document.write(unescape('%09%3C%73%63%72%69%70%74%3E%0A%09%09%24%28%66%75%6E%63%74%69%6F%6E%28%29%20%7B%0A%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%27%29%2E%63%6F%75%6E%74%64%6F%77%6E%28%7B%64%61%74%65%3A%20%27%32%35%20%44%65%63%65%6D%62%65%72%20%32%30%31%38%20%30%30%3A%30%30%3A%30%30%27%7D%2F%2A%2A%2A%20%53%65%74%20%77%65%62%73%69%74%65%20%6C%61%75%6E%63%68%20%64%61%74%65%20%61%6E%64%20%74%69%6D%65%20%2A%2A%2A%2F%2C%20%66%75%6E%63%74%69%6F%6E%28%29%7B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%64%61%79%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%68%6F%75%72%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%6D%69%6E%75%74%65%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%09%24%28%27%23%63%6F%75%6E%74%64%6F%77%6E%20%2E%73%65%63%6F%6E%64%73%27%29%2E%68%74%6D%6C%28%22%30%30%22%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09%24%28%22%66%6F%72%6D%20%69%6E%70%75%74%22%29%2E%66%6F%63%75%73%28%66%75%6E%63%74%69%6F%6E%28%29%7B%0A%09%09%09%09%24%28%74%68%69%73%29%2E%63%73%73%28%22%62%61%63%6B%67%72%6F%75%6E%64%22%2C%20%22%23%62%34%64%63%62%61%22%29%3B%0A%09%09%09%7D%29%3B%0A%09%09%09%24%28%22%66%6F%72%6D%20%69%6E%70%75%74%22%29%2E%62%6C%75%72%28%66%75%6E%63%74%69%6F%6E%28%29%7B%0A%09%09%09%09%69%66%20%28%21%28%24%28%74%68%69%73%29%2E%76%61%6C%28%29%29%29%7B%0A%09%09%09%09%09%24%28%74%68%69%73%29%2E%63%73%73%28%22%62%61%63%6B%67%72%6F%75%6E%64%22%2C%20%22%75%72%6C%28%69%6D%61%67%65%73%2F%70%6C%61%63%65%68%6F%6C%64%65%72%2E%70%6E%67%29%20%6E%6F%2D%72%65%70%65%61%74%20%63%65%6E%74%65%72%20%23%62%34%64%63%62%61%22%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%29%3B%0A%09%09%7D%29%3B%0A%09%3C%2F%73%63%72%69%70%74%3E'));
    //-->
</script>

</body>
</html>

2后端

package baobaobaobao.controller;

import baobaobaobao.entity.FilePath;
import baobaobaobao.tool.Jmail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.mail.MessagingException;
import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * Created by @author LiuChunhang on 2020/6/22.
 */
@Controller
public class ManyFileController {
    @Autowired
    public Jmail jmail;

    public Jmail getJmail() {
        return jmail;
    }


    public void setJmail(Jmail jmail) {
        this.jmail = jmail;
    }
    //利用model传值,请求model的addAttribute即可访问图片,Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中;
    @PostMapping(value = "/Manyfileup")
    public String fileUpload(@RequestParam(value = "files") MultipartFile files[]) throws MessagingException {
        if (files==null||files.length==0) {
            System.out.println("文件为空空");
        }else {

            for (int i=0;i<files.length;i++) {
                MultipartFile file=files[i];
                // 文件名
                String fileName = file.getOriginalFilename();
                // 后缀
                String suffixName = (i+1)+fileName.substring(fileName.lastIndexOf("."));
                // 上传后的路径
                //String filePath = request.getSession().getServletContext().getRealPath("shuang/");
                // 新文件名
                String filePath = "/root/picture/";
                //String filePath="E:\\JavaWorkSpace\\";
                String datestring= new  Date().toString();
                String name = datestring.substring(0, 11) + suffixName;
                String pathname=filePath + name;
                System.out.println(pathname);
                File dest = new File(pathname);
                if (!dest.getParentFile().exists()) {
                    dest.getParentFile().mkdirs();
                }
                try {
                    file.transferTo(dest);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //String filename = "/shuang/" + fileName;
                FilePath p = new FilePath(pathname,datestring);
                System.out.println(p);
                jmail.picture(p);
                System.out.println("多文件上传成功");
            }
        }

        jmail.mail();
        System.out.println("邮件发送成功");
        return "WEB-INF/email";
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牵牛刘先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值