jsjq、ajax、java实现多文件上传与列表显示

效果图:

        

实现Form表单添加数据、上传文件。

数据表与文件表通过文件表id关联。

前端代码:

JS:

<script type="text/javascript">

//生成UUID
    function UUID() {
        var s = [];
        var hexDigits = "0123456789abcdef";
        for (var i = 0; i < 36; i++) {
            s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
        }
        s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
        s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
        s[8] = s[13] = s[18] = s[23] = "-";
        var uuid = s.join("");
        return uuid;
    }

    //点击上传文件按钮触发隐藏的文件上传input
    function butfile() {
        $("#inputLIMSFile").click();

    }
    //选择文件后、获取多选文件信息、循环得到每一条文件、在得到每个文件的属性拼成tr存放到table内显示。
    function inputfile(value) {
        var uuid = UUID();
        console.log("inputLIMSFile.files", $("#inputLIMSFile")[0].files)

        //获取上传文件数组
        var filesList = inputLIMSFile.files;
        var tr = "";
        for (var i = 0; i < filesList.length; i++) {

            //使用URL.createObjectURL()可以在线打开文件;
            let fileHref = URL.createObjectURL(filesList[i]);

            //获取文件信息动态在table内显示  动态参数拼接 '+参数+'  设置每个tr标识' + i +uuid+ '用于操作tr数据
            tr += '<tr id=tr' + i + uuid + '><td><a href=' + fileHref + '  target="_blank"  >' + filesList[i].name + '</a></td><td>' + (filesList[i].size / 1014).toFixed(1) + 'kb</td><td>等待上传</td><td><button οnclick="deleteFile(' + "'tr" + i + uuid + "'" + ' )" type="button" class="btn btn-danger">删除</button></td></tr>'
        }

        //获取table Id添加tr
        $("#filetbody").append(tr);


        //循环所选文件、通过ajax逐条上传到服务器与数据库
        for (var i = 0; i < filesList.length; i++) {

            //将文件信息存到fileData中、后端通过MultipartHttpServletRequest接收
            var fileData = new FormData();
            fileData.append('fileData', filesList[i]);
            $.ajax({
                url : "${ctx}/limsfilemanagement/limsFileManagement/uploadFiles?fileTypeupdateId=" + $("#fileTypeupdateId").val(), //请求地址
                dataType : "text", //返回数据格式
                //async : true, //是不是异步请求 默认异步
                async : false, //是不是异步请求 默认异步
                data : fileData, //参数传递
                cache : false,
                contentType : false, // 告诉jQuery不要去设置Content-Type请求头
                processData : false, // 告诉jQuery不要去处理发送的数据
                type : "post", //请求方式
                success : function(fanhui) {

                    console.log("fanhui", fanhui);
                    console.log("i", i);

                    var trid = "tr" + i + uuid;


                    //  请求成功时的操作、将等待的状态改为上传成功
                    $("tr[id=" + trid + "]").children("td").eq(2).html("上传成功");

                    //将后端存入数据库的id绑定在tr  name属性中、删除时操作数据库用的id
                    $("tr[id=" + trid + "]").attr("name", fanhui);
                },
                error : function() {
                    console.log("错");
                //请求出错处理
                }
            })

        }

    }

    function deleteFile(i) {

        //获取要删除的文件id
        var deleteId = $("tr[id=" + i + "]").attr("name");

        $.ajax({
            url : "${ctx}/limsfilemanagement/limsFileManagement/deleteFile?deleteId=" + $("tr[id=" + i + "]").attr("name"), //请求地址
            dataType : "text", //返回数据格式
            //async : true, //是不是异步请求 默认异步
            async : false, //是不是异步请求 默认异步
            //data : , //参数传递
            cache : false,
            contentType : false, // 告诉jQuery不要去设置Content-Type请求头
            processData : false, // 告诉jQuery不要去处理发送的数据
            type : "post", //请求方式
            success : function(fanhui) {
                //  请求成功时删除tr
                $("tr[id=" + i + "]").remove();
            },
            error : function() {
                console.log("错");
            //请求出错处理
            }
        })


    }

    //返回不保存时删除异步上传的文件
    function fanhui() {
        //获取所有table中的文件数据库id、组成数组传给后端删除方法
        var fanhuiDeleteFileId = [];
        if ($("#filetbody tr").length != 0) {
            var tr = $("#filetbody tr").each(function(i) {
                fanhuiDeleteFileId

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值