成果

因为传入的url是一个假的,所以回显的图片和保留的图片不统一

1.js

kingEditorParams : {   filePostName  : "uploadFile",   uploadJson : '/pic/upload',   dir : "image"},// 初始化图片上传组件initPicUpload : function(data){   $(".picFileUpload").each(function(i,e){      var _ele = $(e);      _ele.siblings("div.pics").remove();      _ele.after(' <div class="pics">             <ul></ul>          </div>'); // 回显图片 if(data && data.pics){          var imgs = data.pics.split(",");          for(var i in imgs){             if($.trim(imgs[i]).length > 0){                _ele.siblings(".pics").find("ul").append("<li><a href='"+imgs[i]+"' target='_blank'><img src='"+imgs[i]+"' width='80' height='50' /></a></li>");             }          }       }       $(e).click(function(){          var form = $(this).parentsUntil("form").parent("form");          KindEditor.editor(TT.kingEditorParams).loadPlugin('multiimage',function(){             var editor = this;             editor.plugin.multiImageDialog({      clickFn : function(urlList) {         var imgArray = [];         KindEditor.each(urlList, function(i, data) {            imgArray.push(data.url);            form.find(".pics ul").append("<li><a href='"+data.url+"' target='_blank'><img src='"+data.url+"' width='80' height='50' /></a></li>");         });         form.find("[name=image]").val(imgArray.join(","));         editor.hideDialog();      }   });          });       });   });},  /** * 初始化单图片上传组件 <br/> * 选择器为:.onePicUpload <br/> * 上传实现后会设置input内容以及在input前面追加<img>    */ initOnePicUpload : function(){   $(".onePicUpload").click(function(){   var _self = $(this);   KindEditor.editor(TT.kingEditorParams).loadPlugin('image', function() {      this.plugin.imageDialog({         showRemote : false,         clickFn : function(url, title, width, height, border, align) {            var input = _self.siblings("input");            input.parent().find("img").remove();            input.val(url);            input.after("<a href='"+url+"' target='_blank'><img src='"+url+"' width='80' height='50'/></a>");            this.hideDialog();         }      });   });});  }

2.jsp

<tr>    <td>商品图片:</td>    <td>        <a href="javascript:void(0)" class="easyui-linkbutton picFileUpload">上传图片</a>         <input type="hidden" name="image"/>    </td></tr>

3.后端实现

3.1封装ImageVO
特定的格局信息{“error”:0,“url”:“图片的保留门路”,“width”:图片的宽度,“height”:图片的高度}

依据easyUI的格局信息封装ImageVO类

package com.jt.vo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.experimental.Accessors;import java.io.Serializable;/** * @Author WL * @Date 2020-9-29 15:51 * @Version 1.0 * 上传图片的封装类 */@Data@Accessors(chain = true)@NoArgsConstructor@AllArgsConstructorpublic class ImageVo implements Serializable {    private Integer error;//   0失常    private String url; // 图片拜访的虚构门路    private Integer width;    private Integer height;        // 设定上传失败的办法    public static ImageVo faile() {        return new ImageVo(1, null, null, null);    }    public static ImageVo success(String url, Integer width, Integer height) {        return new ImageVo(0, url, width, height);    }}
3.2管制层FileController
/** *  http://localhost:8091/pic/upload?dir=image  ; image代表上传的是一张图片 * @param uploadFile * @return 特定的格局信息{“error”:0,“url”:“图片的保留门路”,“width”:图片的宽度,“height”:图片的高度} */@RequestMapping("/pic/upload")public ImageVo file2(MultipartFile uploadFile) {    return fileService.upload(uploadFile);}
3.3FileService;FileServiceImpl
public interface FileService {    ImageVo upload(MultipartFile uploadFile);}
@Servicepublic class FileServiceImpl implements FileService {    private static String rootPath = "D:/image/";    private static Set<String> img;    static {        img = new HashSet<>();        img.add(".png");        img.add(".jpg");        img.add(".gif");    }     /** * 上传的文件要有欠缺的校验性能 * 1.校验后缀是否为图片 * 2.校验是否为恶意程序 * 3.避免文件数量太多,分目录存储 * 4.避免文件重名 * 5.实现文件上传 * * @param uploadFile * @return */@Overridepublic ImageVo upload(MultipartFile uploadFile) {  String imageName = uploadFile.getOriginalFilename();        int index = imageName.lastIndexOf(".");        String imageType = imageName.substring(index);        if (!img.contains(imageType.toLowerCase())) {            return ImageVo.faile();        }        // 校验是否为恶意程序        BufferedImage read = null;        try {            read = ImageIO.read(uploadFile.getInputStream());            int width = read.getWidth();            int height = read.getHeight();            if (width == 0 || height == 0) {                return ImageVo.faile();            }            //避免文件数量太多,分目录存储 yyyy/MM/dd String fileCreated = new                SimpleDateFormat("/yyyy/MM/dd/").format(new Date());            String filePath = rootPath + fileCreated;            File file = new File(filePath);            if (!file.exists()) {                file.mkdirs();            }            // 避免重名UUID            String UUID = java.util.UUID.randomUUID().toString().replace("-", "");            String fileName = UUID + imageType;            String realFilePath = filePath + fileName;            File file1 = new File(realFilePath);            // 上传            uploadFile.transferTo(file1);            //  目前此url是一个假的            return ImageVo.success("http://img30.360buyimg.com/sku/jfs/t1/107693/18/18443/466040/5ec22793Eacc2d45c/f9431c7d8f3f0723.jpg", width, height);        } catch (IOException e) {            e.printStackTrace();            return ImageVo.faile();        }    }}