summernote上传图片(java+springMvc)

网上教程一堆坑,希望这篇文章能帮助和我一样踩进坑里的朋友跳出坑。

如果你觉得这边文章等帮助到你,请给个好评或转载,谢谢!

summernote上传图片步骤

html代码:

summernote容器

<div id="fileContent">
		                        
</div>

js代码:

var $summernote = $('#fileContent').summernote({
    ... //此处代码省略,
    //初始化富文本框
    height: 300,
    minHeight: null,
    maxHeight: null,
    focus: true,
    lang: 'zh-CN', //必须先加入summernote-zh-CN.js才能使用
    placeholder: "1、在此输入文字;2、插入图片可保存到服务器;3、通过键盘清除键可删除服务器的图片;4、可添加emojis",
    onImageUpload: function(files, editor, $editable) {
	    saveFile(files, editor, $editable);
    }
});

图片上传与回显:

function saveFile(files, editor, $editable) {
    //files是上传的图片集合,这里案例只是单张图片上传,网上教程一大推,此处代码省略
    var formdata = new FormData();//存放上传的文件数据
    //此处 $('.note-image-input')[0].files[0]与方法传过来的参数files[0]应该等价,可以自己尝试是否等价
    formdata.append("file", $('.note-image-input')[0].files[0]);  
    $.ajax({  
        data : formdata,  
        type : "POST",  
        url : "/upload/img", //上传图片请求服务器地址,(请写你自己的请求地址)  
        cache : false,  
        contentType : false,  
        processData : false,  
        dataType : "json",  
        success: function(src) {
            //src是服务器上传文件响应数据,格式自定义,这里响应数据是文件上传后的可访问的路径 
            if(src!=null&&src!=""){
                //上传成功,处理逻辑
                //回显图片
                editor.insertImage($editable, src); 
            }else{
                //上传失败,处理逻辑
            }
        },  
        error:function(){  
            //上传出错,处理逻辑
        }  
    });  
}

上传图片回显参考链接:https://github.com/summernote/summernote/issues/72

JAVA代码 (SpringMVC框架):

@RequestMapping(value="/upload/img",method={RequestMethod.POST})
@ResponseBody
public String uploadSummerNoteImgs(@RequestParam("file") MultipartFile file, Model model) {
    //文件保存路径,自定义路径
    String savePath=IFile.SUMMERNOTE_FILE_UPLOAD;
    //保存文件,返回文件访问地址
    return FileUtil.savePngFile(file, savePath);
}

文件保存方法代码:

//此方法文件是上传到本地上的,如果你用的是其它文件服务器,请自己写文件保存方法(如:阿里云文件服务器)

/**
 * 功能描述:png格式文件上传
 * @param file
 * @param path
 * @param pactFileDown 访问路径
 * @return 上传文件保存后的目录
 */
 public static String savePngFile(MultipartFile file, String path) {
     //判断文件是否为空  
     if (!file.isEmpty()) {  
          try {
            	//创建每天生成的目录
            	String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
            	path=path+date+"/";
                File filepath = new File(path);
                if (!filepath.exists()){ 
                    filepath.mkdirs();
                }
                //文件保存路径  
                //String filename = file.getOriginalFilename();
                //重新生成文件名
                String filename=UUID.randomUUID().toString().replace("-", "")+".png";
                String savePath = path + filename;
                //转存文件 
                File uploadFile = new File(savePath);
                file.transferTo(uploadFile);
                return date+"/"+filename;
          } catch (Exception e) {  
                e.printStackTrace();  
          }  
     }  
     return null;  
}

参考网上多个教程:发现存在共同的两个坑:

1.大部分教程都是把onImageUpload方法放在callbacks回调方法中的,但是经过多次测试之后发现这样写,根本不会进回调方法,所以这是一个巨坑。

var $summernote = $('#fileContent').summernote({
    ... //此处代码省略
    callbacks:{
        onImageUpload: function(files, editor, $editable) {
	        saveFile(files, editor, $editable);
        }
    }
});

2.回显图片,相信网上教程基本上都应该是这样写的。进过测试完全是不生效的。从上传图片的回调参数可知,还有editor和$editable两个参数,虽然我不清楚这两个参数。但是上传的图片要回显,也得知道回显内容的什么位置才能回显正确对吧。所以猜测这两个参数应该就是会起到这个作用。

function saveFile(files, editor, $editable) {

    //files是上传的图片集合,这里案例只是单张图片上传,网上教程一大推,此处代码省略
    var src='图片路径';
    
    //回显图片
   $('#fileContent').summernote('insertImage', src);

}

这是这几天用这个插件遇到坑,希望能帮助到遇到同样问题朋友。  其它部分代码未粘贴出来,是因为网上已经有哪些教程了,可以去网上找,绝对一大堆。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值