原文章:http://www.kindsoft.net/view.php?bbsid=7&postid=2561
由于struts框架对request对象做了封装,原来处理上传图片的upload_json.jsp文件无法使用了,于是对kindeditor中处理上传图片的upload_json.jsp文件进行重写,通过多次测试后,成功实现了图片的上传。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.io.*"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*"%>
<%@ page import="com.opensymphony.xwork2.ActionContext"%>
<%@ page import="org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper"%>
<%@ page import="org.json.simple.*"%>
<%
//文件保存目录路径 img_upload是服务器存储上传图片的目录名
String savePath = request.getSession().getServletContext().getRealPath("/")+ "img_upload/";
//文件保存目录URL
String saveUrl = request.getContextPath() + "/img_upload/";
//定义允许上传的文件扩展名
String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png","bmp" };
//允许最大上传文件大小
long maxSize = 1024000;
//Struts2 请求 包装过滤器
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
//获得上传的文件名
String fileName = wrapper.getFileNames("imgFile")[0];
//获得文件过滤器
File file = wrapper.getFiles("imgFile")[0];
//得到上传文件的扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
//检查扩展名
if (!Arrays.<String> asList(fileTypes).contains(fileExt)) {
out.println(getError("上传文件扩展名是不允许的扩展名。"));
return;
}
//检查文件大小
if (file.length() > maxSize) {
out.println(getError("上传文件大小超过限制。"));
return;
}
//检查目录
File uploadDir = new File(savePath);
if (!uploadDir.isDirectory()) {
out.println(getError("上传目录不存在。"));
return;
}
//检查目录写入权限
if (!uploadDir.canWrite()) {
out.println(getError("上传目录没有写入权限。"));
return;
}
//重构上传图片的名称
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newImgName = df.format(new Date()) + "_"+ new Random().nextInt(1000) + "." + fileExt;
//设置 KE 中的图片文件地址
String newFileName = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()
+ saveUrl + newImgName;
byte[] buffer = new byte[1024];
//获取文件输出流
FileOutputStream fos = new FileOutputStream(savePath + newImgName);
//获取内存中当前文件输入流
InputStream in = new FileInputStream(file);
try {
int num = 0;
while ((num = in.read(buffer)) > 0) {
fos.write(buffer, 0, num);
}
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
in.close();
fos.close();
}
//发送给 KE
JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newImgName);
out.println(obj.toJSONString());
%>
<%!private String getError(String message) {
JSONObject obj = new JSONObject();
obj.put("error", 1);
obj.put("message", message);
return obj.toJSONString();
}
%>
分享到:
相关推荐
相对于FCKeditor,KindEditor在与Struts2框架整合时,有着更便捷的优势,因为它通常不需要开发者进行额外的过滤文件重写工作。这种无缝对接减少了开发时间,提高了开发效率。 Struts2是Java企业级开发中的一个流行...
在本文中,我们将详细探讨如何将KindEditor与Struts2整合,实现图片上传功能,并使用Bootstrap来优化页面展示。 首先,我们需要下载KindEditor的中文版本,如提供的`kindeditor-4.1.10-zh-CN.zip`文件。解压后,...
本实例聚焦于“kindeditor编辑器与struts2上传图片错误冲突的解决”,这是一个常见的问题,特别是在开发涉及用户内容编辑和上传功能的Web应用时。Kindeditor是一款强大的开源富文本编辑器,它提供了丰富的编辑功能,...
本文将详细阐述如何将KindEditor与Struts2整合,并实现删除图片的功能。 首先,我们需要在项目中引入KindEditor的相关库。这通常包括JavaScript文件和CSS样式文件,它们负责在前端提供编辑器的界面和交互逻辑。将...
在原版的KindEditor中,当它与Struts2框架整合时,可能会遇到上传功能无法正常工作的情况。这可能是由于两者的交互机制存在不兼容或者配置上的冲突导致的。这个修订版就是为了消除这种问题,确保用户在使用Struts2...
Struts2框架与KindEditor-4.1.9在MyEclipse中的集成应用 Struts2作为一款流行的Java Web开发框架,它基于Model-View-Controller(MVC)设计模式,提供了一种组织应用程序结构和控制流程的方式。而KindEditor是一款...
本主题主要探讨如何在KindEditor中实现多图上传功能,并解决因移除Flash导致的选择图片按钮无法展示的问题,同时添加上传后的图片结果展示。 一、多图上传功能 多图上传是现代富文本编辑器必备的功能之一,它允许...
在“kindeditor上传视频、图片功能实现”中,我们将探讨如何利用KindEditor与Java后端配合,实现在网页上进行图片和视频的上传功能。 1. **KindEditor的图片上传功能**: KindEditor内建了图片上传的功能,用户...
kindeditor在JSP页面Struts2框架下使用的demo,解决了在Struts2下上传服务器出错的问题,上传文件不存在的问题,解决了kindeditor与textarea文本域数据同步,带非空验证!
版本4.1.12解决了之前版本中Flash批量上传图片按钮不显示的问题,并且增加了对video视频的支持,使得编辑器更加完善和适应现代网页的需求。 在Flash批量上传图片功能上,KindEditor 4.1.12修复了按钮不显示的bug,...
本地图片上传是KindEditor的一个重要特性,它允许用户直接从他们的计算机上选择图片并上传到服务器。为了实现这一功能,我们需要在服务器端设置一个接收图片的接口,并配置KindEditor的相关参数。在KindEditor的...
这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...
总之,Struts2版KindEditor是一个实用的解决方案,它将强大的Struts2框架与功能丰富的KindEditor相结合,为Web应用提供了一个高效、安全的富文本编辑环境。正确理解和运用这一集成,可以提升项目的用户体验和开发...
"KindEditor图片批量上传工具"是一款专为网页设计者和内容创作者打造的高效图片上传解决方案。这款工具允许用户在Web界面一次性上传多张图片,极大地提升了工作效率,特别是对于那些需要频繁处理文字和图像,比如...
在它的4.1.11版本中,存在一个与Flash相关的问题,即多图上传按钮无法显示且无法通过Flash进行文件上传。由于Adobe公司在2020年底已经停止对Flash Player的支持,这个问题对于依赖Flash的KindEditor来说,确实是一个...
本文将深入探讨与KindEditor图片上传相关的问题,并结合提供的`UploadService.java`文件,解析图片上传服务的实现细节。 首先,我们需要了解KindEditor的图片上传流程。当用户在编辑器中选择插入图片时,KindEditor...
2. **图片上传**:关键功能之一就是本地图片上传。用户可以直接在编辑器中选择本地图片并上传至服务器,简化了内容创建流程。这个功能对于需要频繁添加图片的网站来说非常实用。 3. **多语言支持**:KindEditor支持...
2、复制struts需要的jar包和kindEditor必须jar包到lib下,因为它们的jar包邮重复,选择最新的就ok 3、如果需要后台java代码获取内容,可以在action中定义content属性,getContent就可以获取到 需要注意的是,这里的 ...
在与Struts2集成时,用户可以通过KindEditor在前端编辑内容,然后通过Struts2Action将数据提交到后端进行处理。 **Struts2与KindEditor的结合** 在Struts2应用中集成KindEditor,可以实现用户友好的内容编辑界面。...