`
zenntou
  • 浏览: 6134 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

struts2实现ckeditor中的文件上传

阅读更多
页面很简单:
<%@ 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 一行内容


虽然比较简单,希望能给大家带来一定的帮助!
2
0
分享到:
评论
1 楼 LD_21 2011-03-22  

相关推荐

    Struts2整合CKeditor

    在Struts2中整合CKeditor和CKfinder,主要是为了让用户在编辑内容时能够方便地插入和管理多媒体资源。这个过程涉及以下几个关键知识点: 1. **Struts2配置**:首先,你需要在Struts2的配置文件(struts.xml)中添加...

    CKEditor实现图片上传(使用Struts2)

    在CKEditor中实现图片上传功能,通常会结合后端框架如Struts2进行处理。本文将深入探讨如何利用CKEditor与Struts2实现图片上传的功能。 首先,我们需要在CKEditor的配置中启用图片上传功能。这可以通过修改CKEditor...

    ckeditor+struts2上传图片

    在Struts2中,我们可以使用`CommonsFileUpload`库来处理文件上传,该库能够解析HTTP请求中的多部分数据,将图片文件从客户端传输到服务器端。 实现CKEditor图片上传到Struts2的步骤大致如下: 1. **配置CKEditor**...

    Ckeditor 上传例子 servlet方式 struts2方式

    在CKEditor中,Struts2 Action可以替代Servlet作为文件上传的接收者。Action类会接收到上传请求,处理文件,并返回结果。 使用Struts2进行CKEditor上传的步骤如下: 1. 配置Struts2的`struts.xml`,定义一个Action...

    struts2整合CKEditor

    在Struts2中整合CKEditor,主要涉及以下几个关键知识点: 1. **CKEditor的安装与配置**:首先,你需要从CKEditor官网下载最新版本的编辑器,然后将其解压并放置在Web应用的`WEB-INF`目录下的`js`或`lib`文件夹内,...

    CKEditor实现图片上传(使用Struts2).zip

    2. **创建Struts2 Action**:在Struts2中创建一个Action类,比如`ImageUploadAction`,用于处理上传请求。这个Action需要实现接收文件上传的功能,通常通过`@Params`注解或者自定义拦截器来解析上传的文件。 3. **...

    struts2 + ckeditor

    在Struts2中集成CKEditor,主要是为了在web应用中实现用户友好的文本编辑界面。CKEditor可以通过JavaScript API与服务器端进行交互,将用户的编辑内容,如图片上传,发送到后台处理。以下是这个集成过程中的关键知识...

    ckeditor struts2整合文件上传(图片缩略图展示)

    自己实现的ckeditor文件上传,上网找了各种资料,对代码做了极大的删减,通俗易懂,可作为CMS项目的参考,对浏览器的兼容性很好,支持已上传图片的缩略图展示效果,使用eclipse做出来的,很值得学习和参考!

    Ckeditor--upload-picture-struts2.zip_ckediter struts2_ckeditor_j

    在Struts2中创建一个Action,处理图片上传请求。使用`@Result`注解指定返回结果类型,如JSON或流类型。同时,使用Apache的Commons FileUpload库解析上传的文件。 ```java import org.apache.struts2.interceptor....

    使用ckeditor+struts2+freemaker的图片上传

    在Struts2中,我们可以使用FreeMarker来生成响应的HTML页面。在图片上传的场景下,FreeMarker可以用来渲染上传成功后的反馈信息,或者在失败时显示错误消息。模板文件通常以`.ftl`为扩展名,内容包括HTML结构以及由...

    struts2实现

    一旦文件上传成功,我们可能需要将其保存到服务器的某个位置,并返回一个响应告诉CKEditor文件上传的状态。例如,我们可以创建一个临时文件,然后将上传的文件流写入这个文件。这里通常会涉及到文件路径的管理、异常...

    Struts2整合之CKeditor和CKfinder

    你需要在Struts2中创建Action来处理这些请求。这些Action通常会处理文件的上传、移动、删除等操作,并返回CKfinder可以解析的结果。 5. **安全考虑**: 在实际部署中,一定要注意安全性问题。确保只允许CKfinder访问...

    CKEDITOR_图片上传

    总结来说,通过Java和Struts框架,我们可以有效地处理CKEditor的图片上传请求,将前端提交的图片保存到服务器,并返回相应的响应,从而实现富文本编辑器中的图片上传功能。这不仅提高了用户体验,也为网站内容管理...

    ckeditor在线编辑器,实现在线上传图片和falsh文件

    在Struts2框架中集成CKEditor和文件上传功能,需要配置Action类来处理上传请求。Action类通常会包含一个MultipartFile类型的字段,用于接收上传的文件。Struts2会自动将上传的文件内容绑定到这个字段。然后,Action...

    struts 整合ckeditor

    2. **创建编辑器实例**:在Struts的JSP视图页面中,使用CKEditor的JavaScript代码创建编辑器实例。例如: ```html &lt;textarea name="content" id="editor"&gt;&lt;/textarea&gt; &lt;script src="js/ckeditor.js"&gt; CKEDITOR...

    CKEditor 上传图片

    总的来说,"CKEditor 上传图片"是通过集成CKEditor和Struts2的文件上传功能,实现了在网页编辑器中便捷上传和显示图片的功能。理解并熟练掌握这一技术,对于开发交互性强、用户体验良好的Web应用具有重要意义。

Global site tag (gtag.js) - Google Analytics