由于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整合,并实现删除图片的功能。 首先,我们需要在项目中引入KindEditor的相关库。这通常包括JavaScript文件和CSS样式文件,它们负责在前端提供编辑器的界面和交互逻辑。将...
本实例聚焦于“kindeditor编辑器与struts2上传图片错误冲突的解决”,这是一个常见的问题,特别是在开发涉及用户内容编辑和上传功能的Web应用时。Kindeditor是一款强大的开源富文本编辑器,它提供了丰富的编辑功能,...
在原版的KindEditor中,当它与Struts2框架整合时,可能会遇到上传功能无法正常工作的情况。这可能是由于两者的交互机制存在不兼容或者配置上的冲突导致的。这个修订版就是为了消除这种问题,确保用户在使用Struts2...
Struts2框架与KindEditor-4.1.9在MyEclipse中的集成应用 Struts2作为一款流行的Java Web开发框架,它基于Model-View-Controller(MVC)设计模式,提供了一种组织应用程序结构和控制流程的方式。而KindEditor是一款...
在“kindeditor上传视频、图片功能实现”中,我们将探讨如何利用KindEditor与Java后端配合,实现在网页上进行图片和视频的上传功能。 1. **KindEditor的图片上传功能**: KindEditor内建了图片上传的功能,用户...
本地图片上传是KindEditor的一个重要特性,它允许用户直接从他们的计算机上选择图片并上传到服务器。为了实现这一功能,我们需要在服务器端设置一个接收图片的接口,并配置KindEditor的相关参数。在KindEditor的...
kindeditor在JSP页面Struts2框架下使用的demo,解决了在Struts2下上传服务器出错的问题,上传文件不存在的问题,解决了kindeditor与textarea文本域数据同步,带非空验证!
这是本人写的一个基于KindEditor-4.1.9的Java项目,采用Struts2框架,实现了KindEditor单张图片上传、批量图片上传,可以上传到image目录下的子目录中,可返回上一级目录,并实现了按名称、大小、类型排序的功能。...
在Struts2框架下集成KindEditor,可以方便地实现文本编辑、图片上传、资源浏览等功能,极大地提升用户体验。 **一、Struts2与KindEditor的结合** 1. **集成目的**:Struts2框架通常用于处理服务器端逻辑,而...
本主题主要探讨如何在KindEditor中实现多图上传功能,并解决因移除Flash导致的选择图片按钮无法展示的问题,同时添加上传后的图片结果展示。 一、多图上传功能 多图上传是现代富文本编辑器必备的功能之一,它允许...
“粘贴时自动上传网络图片”是指当用户从剪贴板粘贴包含网络图片的文本时,编辑器会自动抓取这些图片并上传到服务器,然后替换为服务器上的图片链接。这需要监听编辑器的`paste`事件,解析HTML内容中的图片URL,然后...
在技术实现层面,"KindEditor"很可能采用了HTML5的File API来实现图片的本地预览和上传功能,同时结合了AJAX技术进行后台数据传输,以确保用户在上传大量图片时的流畅体验。为了优化上传速度和服务器存储空间,可能...
2、复制struts需要的jar包和kindEditor必须jar包到lib下,因为它们的jar包邮重复,选择最新的就ok 3、如果需要后台java代码获取内容,可以在action中定义content属性,getContent就可以获取到 需要注意的是,这里的 ...
本文将深入探讨与KindEditor图片上传相关的问题,并结合提供的`UploadService.java`文件,解析图片上传服务的实现细节。 首先,我们需要了解KindEditor的图片上传流程。当用户在编辑器中选择插入图片时,KindEditor...
本文将详细讲解如何在KindEditor中实现图片上传时携带token字段,以确保数据的安全性和完整性。 首先,理解“token”在Web开发中的作用至关重要。Token通常用于验证客户端请求的合法性,防止跨站请求伪造(Cross-...
在它的4.1.11版本中,存在一个与Flash相关的问题,即多图上传按钮无法显示且无法通过Flash进行文件上传。由于Adobe公司在2020年底已经停止对Flash Player的支持,这个问题对于依赖Flash的KindEditor来说,确实是一个...
在与Struts2集成时,用户可以通过KindEditor在前端编辑内容,然后通过Struts2Action将数据提交到后端进行处理。 **Struts2与KindEditor的结合** 在Struts2应用中集成KindEditor,可以实现用户友好的内容编辑界面。...
当用户在编辑器中选择图片并提交上传时,KindEditor会调用预设的上传处理程序,通常是通过一个服务器端脚本,如`upload_json.ashx`。这个脚本负责接收图片数据,验证,处理,然后返回相应的JSON结果给编辑器。 在`...