舒大少博客

一个95后少年的个人博客

当前时间为:
欢迎大家来到舒大少博客http://admin.evshou.com,广告合作以及淘宝商家推广请微信联系15357240395
...
零基础学Python从入门到精通 python基础教程基础

【在售价】34.90 元
【在售价】34.90 元

立即领券
...
Python编程从入门到精通 视频教学 python语言程序设计

【在售价】29.80 元
【券后价】19.80元

立即领券
...
未来教育计算机二级ms office题库电子版c语言

【在售价】28.00 元
【在售价】28.00 元

立即领券
...
Python3视频零基础教程自学入门到精通编程语言程序设计网络爬虫

【在售价】62.00 元
【券后价】52.00元

立即领券
...
Python编程从入门到精通 零基础学python数据分析

【在售价】29.80 元
【券后价】19.80元

立即领券

SpringBoot文件上传下载

2021-03-29 15:08:00
swq1822677238

手机扫码查看

SpringBoot文件上传下载

控制层:

@Controller
@RequestMapping("/")
public class UploadController {
    @RequestMapping("/")
    public String index(){return "upload";}
    // 得到一个新的文件路径
    public String realPath(String path){
        SimpleDateFormat y=new SimpleDateFormat("yyyy");
        SimpleDateFormat m=new SimpleDateFormat("MM");
        SimpleDateFormat d=new SimpleDateFormat("dd");
        Date date=new Date(System.currentTimeMillis());
        String year = y.format(date);
        String month = m.format(date);
        String day = d.format(date);
        String realPath=path+ File.separator+year+File.separator+month+File.separator+day;
        File file=new File(realPath);
        if(!file.exists()) file.mkdirs();
        return realPath;
    }


    // 得到一个新的带有用户名的文件名
    public String newFilename(String username,String filename){
        Date date=new Date();
        SimpleDateFormat time=new SimpleDateFormat("yyyyMMddHHmmss");
        String times = time.format(date);
        return times+"_"+username+"_"+filename;
    }
    // 文件上传
    @RequestMapping("/upload")
    public void upload(String username, MultipartFile file, HttpServletRequest request, HttpServletResponse response)throws Exception{
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 获得文件名称
        String filename = file.getOriginalFilename();
        System.out.println(filename);
        // 判断是否上传文件
        if (file != null && filename != null) {
            // 获取上传目录
            String realPath = request.getServletContext().getRealPath("/WEB-INF/upload");
            String newFilePath = realPath(realPath);
            String newFilename = newFilename(username,filename);
            // 判断上传目录是否存在,如果不存在则创建反之直接存
            File file1=new File(newFilePath);
            if(!file1.exists())file1.mkdirs();
            file.transferTo(new File(newFilePath+File.separator+newFilename));
        }
    }
    // 文件下载
    @RequestMapping("/download")
    public void download(String filename,HttpServletRequest request,HttpServletResponse response) throws IOException {
        String realPath = request.getServletContext().getRealPath("/WEB-INF/upload");
        String newFilePath = realPath(realPath);
        response.setHeader("content-disposition","attachment;filename="+filename);
        IOUtils.copy(new FileInputStream(newFilePath+File.separator+filename),response.getOutputStream());
    }
    // 获取文件列表
    public void getFileList(String path, HashMap<String,String> map){
        File file=new File(path);
        File[] files = file.listFiles();
        if (files != null) {
            for (File file1 : files) {
                if (file1.isDirectory()) {
                    getFileList(file1.getPath(),map);
                }else{
                    String name = file1.getName();
                    String sub=name.substring(name.lastIndexOf("_")+1);
                    map.put(name,sub);
                }
            }
        }
    }
    // 展示文件列表
    @RequestMapping("/fileList")
    public String fileList(HttpServletRequest request){
        String realPath = request.getServletContext().getRealPath("/WEB-INF/upload");
        HashMap<String,String> map=new HashMap<>();
        getFileList(realPath,map);
        request.setAttribute("map",map);
        return "showFileLists";
    }
}

文件列表的jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>下载页面</title>
</head>
<body>
    <h3>下载列表</h3>
    <table border="1">
        <tr>
            <th>文件名</th>
            <th>操作</th>
        </tr>
        <c:forEach var="files" items="${requestScope.map}">
            <tr>
                <td>文件名:${files.value}</td>
                <td>
                    <a href="${pageContext.request.contextPath}/download?filename=${files.key}">下载</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

只展示登录用户的文件列表,修改文件列表的jsp,可以把王五换成session的用户作用域里的用户名

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>下载页面</title>
</head>
<body>
    <h3>下载列表</h3>
    <table border="1">
        <tr>
            <th>文件名</th>
            <th>操作</th>
        </tr>
        <c:forEach var="files" items="${requestScope.map}">
            <c:if test="${files.key.contains('王五')}">
                <tr>
                    <td>文件名:${files.value}</td>
                    <td>
                        <a href="${pageContext.request.contextPath}/download?filename=${files.key}">下载</a>
                    </td>
                </tr>
            </c:if>
        </c:forEach>
    </table>
</body>
</html>

 

发表评论

邮箱地址不会被公开。 必填项已用*标注