热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kindeditorjava上传图片_KindEditor富文本框编辑器上传图片功能实现,基于java项目...

1.HTML标签与jquery代码编辑富文本框KindEditor.ready(function(K){vareditorK.create(#editor_id,{themeTyp

1. HTML标签与jquery代码

// 编辑富文本框

KindEditor.ready(function(K) {

var editor = K.create('#editor_id', {

themeType : "simple",

uploadJson : CONTEXT_PATH + "transportations/describe/upload",

resizeType : 1,

imageTabIndex : 1,

filterMode : true,

allowPreviewEmoticons : false,

allowImageUpload : true,

allowFileManager : true,

afterBlur : function() {

this.sync();

},

afterUpload : function(url) {

//上传图片后的代码

var image = "%22+url+%22";

insertHtmlAtCaret(image);

},

items : [ 'source', 'undo', 'redo', 'plainpaste', 'wordpaste', 'clearhtml', 'quickformat', 'selectall', 'fullscreen', 'fontname', 'fontsize', '|', 'forecolor',

'hilitecolor', 'bold', 'italic', 'underline', 'hr', 'removeformat', '|', 'justifyleft', 'justifycenter', 'justifyright', 'insertorderedlist',

'insertunorderedlist', '|', 'link', 'image', 'unlink', 'baidumap', 'emoticons' ]

});

});

// 在光标处添加内容

function insertHtmlAtCaret(html) {

var sel, range;

if (window.getSelection) {

sel = window.getSelection();

if (sel.getRangeAt && sel.rangeCount) {

range = sel.getRangeAt(0);

range.deleteContents();

var el = document.createElement("textarea");

el.innerHTML = html;

var frag = document.createDocumentFragment(), node, lastNode;

while ((node = el.firstChild)) {

lastNode = frag.appendChild(node);

}

range.insertNode(frag);

if (lastNode) {

range = range.cloneRange();

range.setStartAfter(lastNode);

range.collapse(true);

sel.removeAllRanges();

sel.addRange(range);

}

}

} else if (document.selection && document.selection.type != "Control") {

document.selection.createRange().pasteHTML(html);

}

}

2. java后台实现

/**

*

* 富文本框编辑-上传图片

*

* @param localUrl

* @return

* @throws IOException

* @throws FileUploadException

*/

@RequestMapping(value = "upload")

public void uploadImg(HttpServletRequest request, HttpServletResponse response)

{

// 设置Response响应的编码

response.setContentType("text/html; charset=UTF-8");

// 获取一个Response的Write对象

PrintWriter writer = null;

try

{

writer = response.getWriter();

// 文件保存目录路径

String savePath = request.getServletContext().getRealPath("/") + "attached/";

// 文件保存目录URL

String saveUrl = request.getContextPath() + "/attached/";

// 定义允许上传的文件扩展名

HashMap extMap = new HashMap();

extMap.put("image", "gif,jpg,jpeg,png,bmp");

// 最大文件大小

long maxSize = 1000000;

// 判断是否是一个文件

if (!ServletFileUpload.isMultipartContent(request))

{

writer.println(getError("请选择文件。"));

return;

}

// 检查目录upload, 没有则创建一个

File uploadDir = new File(savePath);

if (!uploadDir.isDirectory())

{

uploadDir.mkdirs();

}

// 检查目录写权限

if (!uploadDir.canWrite())

{

writer.println(getError("上传目录没有写权限。"));

return;

}

String dirName = request.getParameter("dir");

if (dirName == null)

{

dirName = "image";

}

if (!extMap.containsKey(dirName))

{

writer.println(getError("目录名不正确。"));

return;

}

// 创建文件夹

savePath += dirName + "/";

saveUrl += dirName + "/";

File saveDirFile = new File(savePath);

if (!saveDirFile.exists())

{

saveDirFile.mkdirs();

}

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

String ymd = sdf.format(new Date());

savePath += ymd + "/";

saveUrl += ymd + "/";

File dirFile = new File(savePath);

if (!dirFile.exists())

{

dirFile.mkdirs();

}

DefaultMultipartHttpServletRequest servletRequest = (DefaultMultipartHttpServletRequest) request;

Iterator iterator = servletRequest.getFileNames();

while (iterator.hasNext())

{

MultipartFile file = servletRequest.getFile(iterator.next());

String fileName = file.getOriginalFilename();

// 检查文件大小

if (file.getSize() > maxSize)

{

writer.println(getError("上传文件大小超过限制。"));

return;

}

// 检查扩展名

String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();

if (!Arrays. asList(extMap.get(dirName).split(",")).contains(fileExt))

{

writer.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));

return;

}

// 以时间重新命名文件名

String newFileName = CommonUtils.newFileName(fileName);

File uploadedFile = new File(savePath, newFileName);

file.transferTo(uploadedFile);

JSONObject obj = new JSONObject();

obj.put("error", 0);

obj.put("url", saveUrl + newFileName);

writer.println(obj.toJSONString());

}

}

catch (Exception e)

{

logger.error("上传文件失败!" + e.getMessage());

}

finally

{

// 将writer对象中的内容输出

writer.flush();

// 关闭writer对象

writer.close();

}

}

/**

*

* 上传图片-响应错误信息

*

* @author

* @param message

* @return

*/

private String getError(String message)

{

JSONObject obj = new JSONObject();

obj.put("error", 1);

obj.put("message", message);

return obj.toJSONString();

}

关于KindEditor编辑器,了解更多请参考官网文档;



推荐阅读
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • AFNetwork框架(零)使用NSURLSession进行网络请求
    本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • 校园表白墙微信小程序,校园小情书、告白墙、论坛,大学表白墙搭建教程
    小程序的名字必须和你微信注册的名称一模一样在后台注册好小程序。mp.wx-union.cn后台域名https。mp.wx-union.cn ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
author-avatar
ss29566982
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有