Thymeleaf 多文件上传、删除、回显

文章目录

多文件上传

实习遇到个需求,需要多文件上传和删除,还有回显的需求。

html写法:如果有需要回显的文件,则显示,用checkbox来存储需要回显文件的id,方便提交多个,在显示页面将checkbox隐藏即可。每次点击添加附件按钮,都会显示一个【选择文件】按钮。
在这里插入图片描述

<form id="editForm" action="/save" method="post" enctype="multipart/form-data">
     <div>
            <input type="button"  id="showAttach" value="添加附件" />
            <!--回显已上传文件-->
            <ol th:if="${fileList != null}" th:each="file : ${fileList}">
               <li>
                    <a href="javascript:void (0)" th:text="${file.name}"></a>
                    <input type="button" class="ddBtn btnRed removeAttach" value="移除"/>
                    <!--checkbox用Jquery隐藏即可-->
                    <input class="commonInput checkbox" type="checkbox" name="uploadedFileList" checked th:value="${file.id}" >
                </li>
             </ol>
             <!--上传文件-->
            <ol id="fileList"></ol>
     </div>
</form>

js写法,基于jQuery

$(document).ready(function(){
    $(".checkbox").hide();
    $(document).delegate("#showAttach","click",function add() {
         $("#fileList").append("<li >" +
             "<input class='fileInput' name='attach' type=\"file\" />" +
             "</li>");
     });
     $(document).delegate(".fileInput","change",function () {
         var $this = $(this);
         var id=$.uuid();
         $(this).parent().attr("dataid",id);
         var fullPath = $this.val();
         var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
         var filename = fullPath.substring(startIndex);
         if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
             filename = filename.substring(1);
             $(this).parent().append("<a href=\"javascript:void (0)\">"+filename+"</a><input type=\"button\" class=\"ddBtn btnRed removeAttach\" value=\"移除\"/>")
         }
         console.log($(this).val());
         $(this).hide();
     });
     $(document).delegate(".removeAttach","click",function () {
         var $parent=$(this).parent();
         $parent.remove();
     });
});      

controller写法,接受回显并编辑后的文件信息用String[] uploadedFileList,也就是隐藏了的checkbox的内容, 即可 对其操作。
这时候uploadedFileList存储的就是之前上传 并且 被保留下来的文件。
在这里插入图片描述

	/**
     *保存
     */
     @PostMapping("/save")
    @ResponseBody
    public ApiResult<Boolean> Save(String[] uploadedFileList
            ,@RequestParam(value = "attach",required = false) MultipartFile[] myfiles
            , PolicyInfoVO policyInfoVO
    ) {
		//do something
        return "hello";
    }

祝你好运!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值