RouYi bootstrap-fileinput 上传回显编辑添加删除


文章目录

  • RouYi bootstrap-fileinput 上传回显编辑添加删除
  • 前言
  • 一、fileinput.js修改
  • 二、设置页面fileinput.js调用
    • 1.页面初始化控件
    • 2.后台delete方法
    • 3.页面点击删除事件不触发,任意上传一张图片,删除正常
  • 总结


前言

因需求,需要获取图片的newfilename newfilepath并且要给用户展示上传时候的filename,实现如下。

一、fileinput.js修改

修改fileinput.js,因为previewId中包含文件名后缀中带有. (例如:test.jpg),导致无法使用jq获取div信息。
提示:修改当前信息根据自己的调用,和对应的版本,参考:https://blog.csdn/torpidcat/article/details/103084364

 if (!self._getThumbFile($thumb)) {
      $thumb.attr({'id': self.previewInitId + '-i-' + i, 'data-fileindex': i});
      i++;
  } else {
      $thumb.attr({'id': 'uploaded-' + $h.uniqId(), 'data-fileindex': '-1'});
  }
  self._getZoom(pid).attr({
      'id': 'zoom-' + $thumb.attr('id'),
      'data-fileindex': $thumb.attr('data-fileindex')
  });

二、设置页面fileinput.js调用

1.页面初始化控件

参考:https://blog.csdn/torpidcat/article/details/103084364

function  initIdCardFile(){
        //测试图片回显
        var initialList= [{"id":123,"filename":"001.jpg","filepath":"http://demo.ruoyi.vip/img/profile.jpg","newfilename":"fdsa"},
        {"id":124,"filename":"002.jpg","filepath":"http://demo.ruoyi.vip/img/profile.jpg","newfilename":"te12"}];
        var previewJson = new Array();//回显文件数组
        var initPreviewConfig = new Array();
        if(initialList!=null){
            for(var i = 0; i < initialList.length; i++){
                previewJson[i] = initialList[i].filepath;
                //组装图片配置
                var tjson = {
                    type:getFileTypeFromUrl(initialList[i].filepath),
                    caption: initialList[i].filename, // 展示的文件名
                    url: 'idcardremove', // 删除url 必填,可以写一个空方法,不然无法删除初始化图片
                    key: initialList[i].id, // 删除时Ajax向后台传递的参数
                    /*  extra: function() {
                         return {"id":id};
                     } */ //这里也可以携带格外的参数
                };
                initPreviewConfig[i] = tjson;
            }
        }
        // 多图上传
        $("#multipleFile").fileinput({
            uploadUrl: ctx + 'common/uploads',//上传路径
            fileActionSettings:{
                uploadClass:'hideBtn'
            },
            overwriteInitial: false,
            initialPreviewAsData: true,
            initialPreview:previewJson,
            initialPreviewConfig: initPreviewConfig,
            // uploadAsync:false, 需要使用异步
            layoutTemplates :{
                actionUpload:'',//去除上传预览缩略图中的上传图片
            },
            showPreview: true,//是否显示预览
            showUpload: false,//不显示底部上传按钮
            showRemove: false,//不显示底部清空按钮
            showCaption: true,//显示底部上传按钮左侧文本(完全是为了美观)
        }).on('filebatchuploadsuccess', function (event, data, previewId, index) {
            var rsp = data.response;
        }).on('fileuploaded',function(event,data,previewId,index){
            var resultObj = data.response;
            console.log(resultObj);
            if(resultObj != null && resultObj.code == 0){
                $("#" + previewId).append("<span class='hidden_img hidden_img_upload' hidden >"+resultObj.fileNames+"</span>");
                $.modal.msgSuccess("上传成功");
            }else{
                $.modal.msgError("上传失败");
            }
        }).on('filebatchselected', function (event, files) {
            $(this).fileinput("upload");//这里会根据uploadAsync值自动去执行对应的回调函
        }).on('filebatchuploaderror', function (event, data, msg) {
            //批量上传失败提示
            var _maxRequestSize = 10240;
            _allFileSize = 0;
            if (_allFileSize > _maxRequestSize) {
                msg = "上传文件总大小(" + (_allFileSize / 1024).toFixed(2) + "MB)超出限制(" + (_maxRequestSize / 1024).toFixed(2) + "MB)";
                $('#input-id').fileinput('clear');
                $.modal.msgWarning(msg);
            }
        }).on('fileclear', function (event, previewId, extra) {
            //拒绝移除  如果给移除上传控件所有内容的功能,则系统会重新初始化回显的文件,那么我的 initInputFileImg()函数完全不起作用了,所以,禁用它
            return false;
        }).on('fileerror', function (event, data, msg) {
            console.log("--------------------fileerror--------------------");
            console.log(data);
            console.log(msg);
            $.modal.msgError("上传失败");
        }).on('filepreremove', function(event, key) {

            $.modal.msgSuccess("移除成功");
        }).on('filebeforedelete', function(event, key) {
            $.modal.msgSuccess("移除成功");
        });

    }
 $(document).ready(function () {
        initIdCardFile(); //调用上面的初始化方法
        initInputFileImg();

    });
      function getFileTypeFromUrl(url){
        if(url.endsWith('gif')||url.endsWith('jpg')||url.endsWith('jpeg')||url.endsWith('png')){
            return 'image';
        }
        if(url.endsWith('mp4')){
            return 'video';
        }
    }

$(this).find(‘.kv-file-content’) 请根据自己对应的获取避免添加多个,我这里只取第一个,如果不限制会同时添加两个。
可以按照自己的方式添加多个信息。利于后台提交,进行数据保存。

 //回显文件 对应的div里追加 hidden_img
    function initInputFileImg(){
        $(".file-sortable").each(function(){
            var tempFileName = $(this).find('.kv-file-content').find('.file-preview-image').attr("src");
            $(this).find('.kv-file-content').eq(0).parent().append("<span class='hidden_img hidden_img_init' hidden >"+tempFileName+"</span>");
        })
    }

2.后台delete方法

写个空的就可以。我直接返回true。
代码如下(示例):

/**
     * 删除骑士主
     */
    @RequiresPermissions("master:master:idcardremove")
    @Log(title = "删除骑士身份证", businessType = BusinessType.DELETE)
    @PostMapping( "/idcardremove")
    @ResponseBody
    public AjaxResult idcardremove(String ids)
    {
        return toAjax(true);
    }

3.页面点击删除事件不触发,任意上传一张图片,删除正常

请参考:https://blog.csdn/A1318066232/article/details/79314890

如果无法找到回调函数,可以使用浏览器进行调试。

总结

注意对应版本,修改位置可以进行使用浏览器进行debug。确认js的方法,进行回调函数的使用。其他设置可以结合网上搜索相关配置。

更多推荐

RouYi bootstrap-fileinput 上传回显编辑添加删除