页面很简单:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>editor</title>
<script type="text/javascript" src="resource/ckeditor/ckeditor.js"></script>
</head>
<body>
<textarea id="test"></textarea>
<script>
CKEDITOR.replace("test",{
filebrowserUploadUrl : 'ckeditor/ckupload.action'
});
</script>
</body>
</html>
因为ckeditor默认上传文件的字段为upload
所在Action中的字段应为:
upload,uploadContentType,uploadFileName
为什么是这三个字段,大家应该都清楚的吧。
package com.zenntou.test.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class CkeditorUploadAction extends ActionSupport {
private String uploadContentType;
private String uploadFileName;
private String CKEditorFuncNum;
private String CKEditor;
private String langCode;
private File upload;
/**
* @return the upload
*/
public File getUpload() {
return upload;
}
/**
* @param upload the upload to set
*/
public void setUpload(File upload) {
this.upload = upload;
}
/**
* @return the cKEditorFuncNum
*/
public String getCKEditorFuncNum() {
return CKEditorFuncNum;
}
/**
* @param cKEditorFuncNum the cKEditorFuncNum to set
*/
public void setCKEditorFuncNum(String cKEditorFuncNum) {
CKEditorFuncNum = cKEditorFuncNum;
}
/**
* @return the cKEditor
*/
public String getCKEditor() {
return CKEditor;
}
/**
* @param cKEditor the cKEditor to set
*/
public void setCKEditor(String cKEditor) {
CKEditor = cKEditor;
}
/**
* @return the langCode
*/
public String getLangCode() {
return langCode;
}
/**
* @param langCode the langCode to set
*/
public void setLangCode(String langCode) {
this.langCode = langCode;
}
/**
* @return the uploadContentType
*/
public String getUploadContentType() {
return uploadContentType;
}
/**
* @param uploadContentType the uploadContentType to set
*/
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
/**
* @return the uploadFileName
*/
public String getUploadFileName() {
return uploadFileName;
}
/**
* @param uploadFileName the uploadFileName to set
*/
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
@Override
public String execute() throws Exception {
String strPath = ServletActionContext.getServletContext().getRealPath("/uploads");
File path = new File(strPath);
if(!path.exists()){
path.mkdirs();
}
//FileImageInputStream is = new FileImageInputStream(this.upload);
//FileImageOutputStream os = new FileImageOutputStream(new File(strPath + File.separator + this.uploadFileName));
InputStream is = new FileInputStream(this.upload);
OutputStream os = new FileOutputStream(new File(strPath + File.separator + this.uploadFileName));
try {
int len;
byte[] buffer = new byte[1024];
while ((len=is.read(buffer)) > 0) {
os.write(buffer,0,len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}
PrintWriter out = ServletActionContext.getResponse().getWriter();
//返回给ckeditor
out.write("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction("+this.CKEditorFuncNum+", 'uploads/" + this.uploadFileName+"', '');</script>");
return Action.NONE;
}
}
因为要上传文件,所以要配置一下struts.multipart.saveDir
有两种方法:
在struts.xml配置文件里添加:
<constant name="struts.multipart.saveDir" value="d:\\temp"></constant>
或者
在src根目录添加struts.properties文件(如果还没有的话),
添加struts.multipart.saveDir = d:\\temp 一行内容
虽然比较简单,希望能给大家带来一定的帮助!
分享到:
相关推荐
在Struts2中整合CKeditor和CKfinder,主要是为了让用户在编辑内容时能够方便地插入和管理多媒体资源。这个过程涉及以下几个关键知识点: 1. **Struts2配置**:首先,你需要在Struts2的配置文件(struts.xml)中添加...
在CKEditor中实现图片上传功能,通常会结合后端框架如Struts2进行处理。本文将深入探讨如何利用CKEditor与Struts2实现图片上传的功能。 首先,我们需要在CKEditor的配置中启用图片上传功能。这可以通过修改CKEditor...
在Struts2中,我们可以使用`CommonsFileUpload`库来处理文件上传,该库能够解析HTTP请求中的多部分数据,将图片文件从客户端传输到服务器端。 实现CKEditor图片上传到Struts2的步骤大致如下: 1. **配置CKEditor**...
在CKEditor中,Struts2 Action可以替代Servlet作为文件上传的接收者。Action类会接收到上传请求,处理文件,并返回结果。 使用Struts2进行CKEditor上传的步骤如下: 1. 配置Struts2的`struts.xml`,定义一个Action...
在Struts2中整合CKEditor,主要涉及以下几个关键知识点: 1. **CKEditor的安装与配置**:首先,你需要从CKEditor官网下载最新版本的编辑器,然后将其解压并放置在Web应用的`WEB-INF`目录下的`js`或`lib`文件夹内,...
2. **创建Struts2 Action**:在Struts2中创建一个Action类,比如`ImageUploadAction`,用于处理上传请求。这个Action需要实现接收文件上传的功能,通常通过`@Params`注解或者自定义拦截器来解析上传的文件。 3. **...
在Struts2中集成CKEditor,主要是为了在web应用中实现用户友好的文本编辑界面。CKEditor可以通过JavaScript API与服务器端进行交互,将用户的编辑内容,如图片上传,发送到后台处理。以下是这个集成过程中的关键知识...
自己实现的ckeditor文件上传,上网找了各种资料,对代码做了极大的删减,通俗易懂,可作为CMS项目的参考,对浏览器的兼容性很好,支持已上传图片的缩略图展示效果,使用eclipse做出来的,很值得学习和参考!
在Struts2中创建一个Action,处理图片上传请求。使用`@Result`注解指定返回结果类型,如JSON或流类型。同时,使用Apache的Commons FileUpload库解析上传的文件。 ```java import org.apache.struts2.interceptor....
在Struts2中,我们可以使用FreeMarker来生成响应的HTML页面。在图片上传的场景下,FreeMarker可以用来渲染上传成功后的反馈信息,或者在失败时显示错误消息。模板文件通常以`.ftl`为扩展名,内容包括HTML结构以及由...
一旦文件上传成功,我们可能需要将其保存到服务器的某个位置,并返回一个响应告诉CKEditor文件上传的状态。例如,我们可以创建一个临时文件,然后将上传的文件流写入这个文件。这里通常会涉及到文件路径的管理、异常...
你需要在Struts2中创建Action来处理这些请求。这些Action通常会处理文件的上传、移动、删除等操作,并返回CKfinder可以解析的结果。 5. **安全考虑**: 在实际部署中,一定要注意安全性问题。确保只允许CKfinder访问...
总结来说,通过Java和Struts框架,我们可以有效地处理CKEditor的图片上传请求,将前端提交的图片保存到服务器,并返回相应的响应,从而实现富文本编辑器中的图片上传功能。这不仅提高了用户体验,也为网站内容管理...
在Struts2框架中集成CKEditor和文件上传功能,需要配置Action类来处理上传请求。Action类通常会包含一个MultipartFile类型的字段,用于接收上传的文件。Struts2会自动将上传的文件内容绑定到这个字段。然后,Action...
2. **创建编辑器实例**:在Struts的JSP视图页面中,使用CKEditor的JavaScript代码创建编辑器实例。例如: ```html <textarea name="content" id="editor"></textarea> <script src="js/ckeditor.js"> CKEDITOR...
总的来说,"CKEditor 上传图片"是通过集成CKEditor和Struts2的文件上传功能,实现了在网页编辑器中便捷上传和显示图片的功能。理解并熟练掌握这一技术,对于开发交互性强、用户体验良好的Web应用具有重要意义。