分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

使用KindEditor完成图片上传

发布时间:2023-09-06 01:57责任编辑:胡小海关键词:暂无标签

前端使用KindEditor,后台使用Springmvc

1 拷贝KindEditor相关文件到项目中

拷贝KindEditor相关文件到项目中

2 准备一个jsp页面

页面中我准备了一个超链接,点击就可以打开KindEditor批量图片上传对话框

1.jsp页面中需要引入KindEditor相关的css和js文件。

<%@ page language="java" contentType="text/html; charset=UTF-8" ???pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>KindEditor UploadDemo</title><!-- 引入kindeditor的css文件 --><link href="/js/kindeditor-4.1.10/themes/default/default.css" type="text/css" rel="stylesheet"><!-- 引入kindeditor的js文件 --><script type="text/javascript" charset="utf-8" ?src="/js/kindeditor-4.1.10/kindeditor-all-min.js"></script><script type="text/javascript" charset="utf-8" ?src="/js/kindeditor-4.1.10/lang/zh_CN.js"></script><script type="text/javascript"> ???//点击上传图片,打开一个KindEditor上传图片的对话框。 ???function uploadFileFunction() { ???????KindEditor.editor({ ???????????//指定上传文件参数名称 ???????????filePostName : "uploadFile", ???????????//指定上传文件请求的url。 ???????????uploadJson : ‘/pic/upload‘, ???????????//上传类型,分别为image、flash、media、file ???????????dir : "image" ???????}).loadPlugin(‘multiimage‘, function() { ???????????var editor = this; ???????????editor.plugin.multiImageDialog({ ???????????}); ???????}); ???}</script></head><body> ???<a href="javascript:uploadFileFunction()">上传图片</a></body></html>

页面效果如下:

3 后台PictureController

KindEditor的批量上传图片功能,实际上也是一个也给上传,多个图片,每个图片

都会执行下面的方法。需要把commons-io\fileupload的jar包添加到工程中。

maven工程中添加下面的依赖:

下面代码中的图片是上传到了图片服务器里面,当然也可以修改传到其它地方。

package cn.e3mall.controller;import java.util.HashMap;import java.util.Map;import org.springframework.beans.factory.annotation.Value;import org.springframework.http.MediaType;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import cn.e3mall.common.utils.FastDFSClient;import cn.e3mall.common.utils.JsonUtils;/** * @title:PictureController * @description: * @author jepson * @date 2018年5月30日 下午4:20:36 * @version 1.0 */@Controllerpublic class PictureController { ???@Value("${IMAGE_SERVER_URL}") ???private String IMAGE_SERVER_URL; ???????@RequestMapping(value = "/pic/upload",produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8") ???@ResponseBody ???@SuppressWarnings("all") ???public String uploadFile(MultipartFile uploadFile) { ???????try { ???????????// 1、取文件的扩展名 ???????????String originalFilename = uploadFile.getOriginalFilename(); ???????????String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); ???????????// 2、创建一个FastDFS的客户端 ???????????FastDFSClient client = new FastDFSClient("classpath:conf/client.conf"); ???????????// 3、执行上传处理 ???????????String path = client.uploadFile(uploadFile.getBytes(), extName); ???????????// 4、拼接返回的url和ip地址,拼装成完整的url ???????????String url = IMAGE_SERVER_URL + path; ???????????// 5、返回map ???????????Map result = new HashMap<>(); ???????????result.put("error", 0); ???????????result.put("url", url); ???????????????????????//把java对象转换成json字符串 ???????????String json = JsonUtils.objectToJson(result); ???????????return json; ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????????// 5、返回map ???????????Map result = new HashMap<>(); ???????????result.put("error", 1); ???????????result.put("message", "图片上传失败"); ???????????????????????//把java对象转换成json字符串 ???????????String json = JsonUtils.objectToJson(result); ???????????return json; ???????} ???}}

JsonUtils工具类代码

package cn.e3mall.common.utils;import java.util.List;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JavaType;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;/** * ?* @title:JsonUtils * @description:json转换工具类,使用的是jackson * @author jepson * @date 2018年5月29日 下午9:16:16 * @version 1.0 */public class JsonUtils { ???// 定义jackson对象 ???private static final ObjectMapper MAPPER = new ObjectMapper(); ???/** ????* 将对象转换成json字符串。 ????* <p>Title: pojoToJson</p> ????* <p>Description: </p> ????* @param data ????* @return ????*/ ???public static String objectToJson(Object data) { ???????try { ???????????String string = MAPPER.writeValueAsString(data); ???????????return string; ???????} catch (JsonProcessingException e) { ???????????e.printStackTrace(); ???????} ???????return null; ???} ???????/** ????* 将json结果集转化为对象 ????* ?????* @param jsonData json数据 ????* @param clazz 对象中的object类型 ????* @return ????*/ ???public static <T> T jsonToPojo(String jsonData, Class<T> beanType) { ???????try { ???????????T t = MAPPER.readValue(jsonData, beanType); ???????????return t; ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????} ???????return null; ???} ???????/** ????* 将json数据转换成pojo对象list ????* <p>Title: jsonToList</p> ????* <p>Description: </p> ????* @param jsonData ????* @param beanType ????* @return ????*/ ???public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) { ???????JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); ???????try { ???????????List<T> list = MAPPER.readValue(jsonData, javaType); ???????????return list; ???????} catch (Exception e) { ???????????e.printStackTrace(); ???????} ???????????????return null; ???} ???}
View Code

FastDFSClient工具类代码

package cn.e3mall.common.utils;import org.csource.common.NameValuePair;import org.csource.fastdfs.ClientGlobal;import org.csource.fastdfs.StorageClient1;import org.csource.fastdfs.StorageServer;import org.csource.fastdfs.TrackerClient;import org.csource.fastdfs.TrackerServer;public class FastDFSClient { ???private TrackerClient trackerClient = null; ???private TrackerServer trackerServer = null; ???private StorageServer storageServer = null; ???private StorageClient1 storageClient = null; ???public FastDFSClient(String conf) throws Exception { ???????if (conf.contains("classpath:")) { ???????????conf = conf.replace("classpath:", this.getClass().getResource("/").getPath()); ???????} ???????ClientGlobal.init(conf); ???????trackerClient = new TrackerClient(); ???????trackerServer = trackerClient.getConnection(); ???????storageServer = null; ???????storageClient = new StorageClient1(trackerServer, storageServer); ???} ???/** ????* 上传文件方法 ????* <p>Title: uploadFile</p> ????* <p>Description: </p> ????* @param fileName 文件全路径 ????* @param extName 文件扩展名,不包含(.) ????* @param metas 文件扩展信息 ????* @return ????* @throws Exception ????*/ ???public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception { ???????String result = storageClient.upload_file1(fileName, extName, metas); ???????return result; ???} ???public String uploadFile(String fileName) throws Exception { ???????return uploadFile(fileName, null, null); ???} ???public String uploadFile(String fileName, String extName) throws Exception { ???????return uploadFile(fileName, extName, null); ???} ???/** ????* 上传文件方法 ????* <p>Title: uploadFile</p> ????* <p>Description: </p> ????* @param fileContent 文件的内容,字节数组 ????* @param extName 文件扩展名 ????* @param metas 文件扩展信息 ????* @return ????* @throws Exception ????*/ ???public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception { ???????String result = storageClient.upload_file1(fileContent, extName, metas); ???????return result; ???} ???public String uploadFile(byte[] fileContent) throws Exception { ???????return uploadFile(fileContent, null, null); ???} ???public String uploadFile(byte[] fileContent, String extName) throws Exception { ???????return uploadFile(fileContent, extName, null); ???}}
View Code

client.conf配置文件

tracker_server=192.168.25.133:22122

resources.properties配置文件

# 图片服务器地址IMAGE_SERVER_URL=http://192.168.25.133/

4 springmvc中配置文件上传解析器

<!-- 定义文件上传解析器 --> ???<bean id="multipartResolver" ???????class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> ???????<!-- 设定默认编码 --> ???????<property name="defaultEncoding" value="UTF-8"></property> ???????<!-- 设定文件上传的最大值5MB,5*1024*1024 --> ???????<property name="maxUploadSize" value="5242880"></property> ???</bean>

5 测试

1 点击对话框中的添加图片按钮选择需要上传的图片

2 点击开始上传

能够回显说明图片已经上传成功了,演示中的图片是上传到图片服务器的。

3 如果希望点击“全部插入”之后有另外的逻辑的话,可以在对话框中加入点击事件

下面随便给一个演示:

使用KindEditor完成图片上传

原文地址:https://www.cnblogs.com/jepson6669/p/9112491.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved