【 文件上传】

前言

文件上传模块在各种程序中都需要运用到,需要做到根据不同的用户对文件上传的路径进行归类,各自的文件独自进行管理。


1.controller

public class FileControl {
    @Autowired
    private RegisterService registerService;
    @Autowired
    private LoginService loginService;
    @Autowired
    private FileService fileService;

    @RequestMapping(value = "/Login")
    public String index() {
        return "login";
    }
    @RequestMapping(value = "/login")
    @ResponseBody
    public String login(HttpServletRequest request) {
        //        获取账号密码
        String name = request.getParameter("name");
        String pass = request.getParameter("pass");
        User user = new User(name, pass);
        String s = loginService.loginService(user);
        return s;
    }

    //创建文件夹
    @RequestMapping(value = "/file")
    public String file(HttpServletRequest request, Model model, HttpServletResponse response) {
        String name = request.getParameter("name");
        String file = fileService.createFile(name, response, request);

        System.out.println("------------"+file);
        if (file == "无识别用户") {
            return "Login";
        } else {
            model.addAttribute("name", name);
            return "file";
        }
    }

    //文件上传
    @RequestMapping(value = "/upload")
    @ResponseBody
    public String upload(HttpServletRequest request, HttpServletResponse response) {
        String s = fileService.uploadFile(request);
        HashMap<String, Object> map = new HashMap<>();
        map.put("result", s);
        //转为json
        JSONObject jsonObject = new JSONObject(map);
        String res = jsonObject.toString();
        return res;
    }

    //文件列表
    @RequestMapping(value = "/filedata")
    @ResponseBody
    public JSONObject filedata(HttpServletRequest request) {
        String res = fileService.fileList(request);
        JSONObject jsonObject = JSON.parseObject(res);
        jsonObject.remove("message");
        return jsonObject;
    }
//    文件下载
    @RequestMapping(value = "/filedown")
    public void filedown(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
        fileService.fileDown(request, response);
    }
    //文件删除
    @RequestMapping(value = "/filedel")
    @ResponseBody
    public String filedel(HttpServletRequest request,HttpServletResponse response){
        String msg = "";
        msg = fileService.fileDel(request,response);
        return msg;

    }

2.文件上传页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>file</title>
    <!-- 引入 layui.css -->
    <link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">

    <!-- 引入 layui.js -->
    <script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<!--    引入复制到剪切板插件-->
    <script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js"></script>

    <style>
        #uplaod{
            position: absolute;
            left: 50%;
            top: 350%;
            transform: translate(-50%,-50%);
            width: 260px;
            height: 150px;
        }
        .table-location{
            /*border: 1px solid red;*/
            position: absolute;
            left: 50%;
            top: 1050%;
            transform: translate(-50%,-50%);
            width: 85%;
            height: 400px;
        }

    </style>
</head>
<body>
    <div class="layui-container">
        <div class="layui-row layui-bg-cyan">
            <div class="layui-col-md2 layui-col-md-offset10">
                <i class="layui-icon layui-icon-username" style="font-size: 45px;color: snow;" onclick="tologin()"></i>
                <span th:text = "${name}" style="font-size: 40px;margin-left: 15px;" id="myspan"></span>
            </div>
        </div>
        <div class="layui-row">
<!--            <img src="images/icon_Upload.png" id="uplaod">-->
            <div id="uplaod">
                <div class="layui-upload-list">
                    <!-- 文件选择框 -->
                    <div class="layui-upload-drag UploadBusi">
                        <div lay-filter="UploadToolsOne">
                            <i class="layui-icon" style="font-size: 50px !important;"></i>
                            <p>点击上传,或将文件拖拽到此处</p>
                        </div>
                        <span id="demo2" class="layui-form-label layui-hide" style="width: 166px;height: 55px;text-align: center"></span>
                        <img id="demo1" class="layui-upload-img layui-hide" style="height: 107px; width: 196px;"/>
                    </div>
                    <!-- 进度条样式 -->
                    <div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="demo">
                        <div class="layui-progress-bar layui-bg-red" lay-percent="0%"></div>
                    </div>
                </div>
            </div>
        </div>
        <div class="layui-row">
            <div class="table-location">
                <table class="layui-hide" id="test" lay-filter="test"></table>

                <script type="text/html" id="barDemo">

                    <a class="layui-btn layui-btn-xs" lay-event="down">下载</a>
                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                </script>
            </div>
        </div>
        <input id="shareUrl" style="position: absolute;top: -110%" data-clipboard-text="" class="font-primary" value="">
    </div>

    <script>
        layui.use(['upload', 'element', 'layer','table'],function () {
            var $ = layui.jquery
                ,upload = layui.upload
                ,element = layui.element
                ,layer = layui.layer
                ,table = layui.table;
            var name = "[[${name}]]"
            //执行实例
            var uploadInst = upload.render({
                elem: '.UploadBusi',
                url: '/upload/',
                accept: 'file',
                multiple: true,
                data: {"name":name},
                size:204800,
                before: function(obj){
                    element.progress('demo', '0%'); //进度条复位
                    var uploadFileInput = $(".layui-upload-file").val();
                    var uploadFileName = uploadFileInput.split("\\");
                    $('#demo2').text(uploadFileName[uploadFileName.length - 1]);
                    $('#demo2').removeClass("layui-hide");
                    $('div[lay-filter="UploadToolsOne"]').addClass("layui-hide");
                    layer.msg('上传中', {icon: 16, time: 0,shade:[0.3, '#393D49']});
                },
                //进度条
                progress: function(n, elem, res, index){
                    element.progress('demo', n + '%');
                    console.log(index);
                },
                allDone: function (res) {
                    $('#demo2').addClass("layui-hide");
                    $('div[lay-filter="UploadToolsOne"]').removeClass("layui-hide");
                    layer.msg('上传完毕', {icon: 1});
                    table.reload('test',{
                        where: {'name':name},
                    });
                },
                error: function () {

                }
            })
            //生成文件表格
            table.render({
                elem: '#test'
                , url: '/filedata/'
                ,where: {'name':name}
                ,title: '文件数据表'
                ,height: 500
                , cols: [
                    [
                    {field: 'filename', title: '文件名', width: 500}
                    , {field: 'filetime', title: '创建时间', width: 190, sort: true}
                    , {field: 'filesize', title: '文件大小', width: 130, sort: true}
                    , {fixed: 'right', title: '操作', toolbar: '#barDemo', width: 170}
                    ]
                ]
                , page: false
            });
            //监听行工具事件
            table.on('tool(test)',function (obj) {
                var data = obj.data;
                if(obj.event === 'down'){
                    window.location.href= "/filedown?filename="+data.filename+"&name="+name
                }else if (obj.event === 'del'){
                    layer.confirm("真的要删除该文件?" ,function(index) {

                        $.ajax({
                            url: "/filedel/",
                            type: "post",
                            data: {"filename":data.filename,"name":name},
                            success: function (data) {
                                obj.del();
                                layer.close(index);
                                console.log(data);
                            }
                        })

                    })
                }
        })
        function tologin() {
            window.location.href = "/Login";
        }
    </script>
</body>
</html>

部分截图如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

技术

spring boot+layui+ajax+commons-fileupload

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值