`
eric.zhang
  • 浏览: 127833 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

springmvc+dwz+xheditor实现上传图片及swf 视频

阅读更多
注意:如果使用了apache fileupload上传方法,则springmvc-servlet.xml的配置文件里不能再有multipartResolver的配置,两者不能共存。<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />


1前台JSP代码

$(document).ready(function(){
		//初始化在线编辑器
		//设置在线编辑器上传各类文件对应的url
		$("#newGJFrom #gjnr").xheditor({
			upLinkUrl:'${ctx}/fileupload/doXheditorUpload?flag=zip',
			upLinkExt:'zip,rar,txt',
			upImgUrl:'${ctx}/fileupload/doXheditorUpload?flag=img',
			upImgExt:'jpg,jpeg,gif,png',
			upFlashUrl:'${ctx}/fileupload/doXheditorUpload?flag=swf',
			upFlashExt:'swf',
			tools: 'Cut,Copy,Paste,Pastetext,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,Align,List,Outdent,Indent,Link,Unlink,Img,Flash,Table,Source,Preview,Print,Fullscreen',
			skin: 'vista'
		});
		//删除编辑器的 关于图标
		$("span a[name='About']").remove();
		
		
	});


//其他代码省略
<tr>
				<td colspan="3">
					<form:textarea name="gjnr"  path="gjnr" id="gjnr" rows="20" cols="83"/>
				</td>
			</tr>



兼容IE6,在线编辑器需要用如下的方法去写:
<textarea class="editor" name="gjnr" id="gjnr" name="description" rows="20" cols="83"
tools="Cut,Copy,Paste,Pastetext,Blocktag,Fontface,FontSize,Bold,Italic,Underline,Strikethrough,FontColor,BackColor,SelectAll,Removeformat,Align,List,Outdent,Indent,Link,Unlink,Img,Flash,Table,Source,Preview,Print,Fullscreen"
upLinkUrl="${ctx}/fileupload/doXheditorUpload?flag=zip" upLinkExt="zip,rar,txt,doc,docx"
upImgUrl="${ctx}/fileupload/doXheditorUpload?flag=img" upImgExt="jpg,jpeg,gif,png"
upFlashUrl="${ctx}/fileupload/doXheditorUpload?flag=swf" upFlashExt="swf"
skin="vista"></textarea>


2后台controller 处理xheditor的文件上传 也是利用apache的fileupload组件实现



import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javacommon.base.BaseQuery;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/fileupload")
public class FileUploadController {

	
	/**
	 * 在线编辑器 上传单个本地图片 处理类
	 */
	@RequestMapping("/doXheditorUpload")
	public void doImgUpload(ModelMap model, BaseQuery query,HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		response.setHeader("Cache-Control", "no-cache");
		DiskFileItemFactory fac = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(fac);
		upload.setHeaderEncoding("utf-8");
		String err = "";
		//用于显示在在线编辑器里,图片的路径
		String newFileName = "";
		//允许的图片格式
		String fileExt = "";
		String flag = request.getParameter("flag");
		long maxSize = 0;
		if("swf".equals(flag)){
			fileExt = "swf";
			maxSize = 1024*1024*10;
		}
		if("img".equals(flag)){
			fileExt = "jpg,jpeg,bmp,gif,png";
			maxSize = 1024*1024;
		}
		if("media".equals(flag)){
			fileExt = "wmv,avi,wma,mp3,mid";
			maxSize = 1024*1024*10;
		}
		if("zip".equals(flag)){
			fileExt = "zip,rar,txt";
			maxSize = 1024*1024*10;
		}
		try {
			List<FileItem> items = upload.parseRequest(request);
			Map<String, Serializable> fields = new HashMap<String, Serializable>();
			Iterator<FileItem> iter = items.iterator();
			while (iter.hasNext()) {
				FileItem item = (FileItem) iter.next();
				if (item.isFormField())
					fields.put(item.getFieldName(), item.getString());
				else
					fields.put(item.getFieldName(), item);
			}
			String folder=request.getSession().getServletContext().getRealPath("");
			String savePath = folder+File.separator+"xheditorUpload"+File.separator;
			File f1 = new File(savePath);
			System.out.println("---上传保存的目录:"+savePath);
			if (!f1.exists()) {
				f1.mkdirs();
			}
			/*获取表单的上传文件*/
			FileItem uploadFile = (FileItem)fields.get("filedata");
			/*获取文件上传路径名称*/
			String fileNameLong = uploadFile.getName();
			/*获取文件扩展名*/
			/*索引加1的效果是只取xxx.jpg的jpg*/
			String extensionName = fileNameLong.substring(fileNameLong.lastIndexOf(".") + 1);
			//System.out.println("extensionName:" + extensionName);
			/*检查文件类型*/
			if (("," + fileExt.toLowerCase() + ",").indexOf("," + extensionName.toLowerCase() + ",") < 0){
				printInfo(response, "不允许上传此类型的文件", "");
				return;
			}
			/*文件是否为空*/
			if (uploadFile.getSize() == 0){
				printInfo(response, "上传文件不能为空", "");
				return;
			}
			/*检查文件大小*/
			if (uploadFile.getSize() > maxSize){
				printInfo(response, "上传文件的大小超出限制,最大不能超过"+maxSize+"M", "");
				return;
			}
			/*文件存储的相对路径*/
			String saveDirPath = "/xheditorUpload/";
			/*文件存储在容器中的绝对路径*/
			String saveFilePath = request.getSession().getServletContext().getRealPath("") + saveDirPath;
			/*构建文件目录以及目录文件*/
			File fileDir = new File(saveFilePath);
			if (!fileDir.exists()) {fileDir.mkdirs();}
			/*重命名文件*/
			String filename = UUID.randomUUID().toString();
			File savefile = new File(saveFilePath + filename + "." + extensionName);
			/*存储上传文件*/
			uploadFile.write(savefile);
			//这个地方根据项目的不一样,需要做一些特别的定制。
			newFileName = "/bmxxfb"+saveDirPath + filename + "." + extensionName;		
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			newFileName = "";
			err = "错误: " + ex.getMessage();
		}
		printInfo(response, err, newFileName);
	}
	
	/**
	 * 使用I/O流输出 json格式的数据
	 * @param response
	 * @param err
	 * @param newFileName
	 * @throws IOException
	 */
	public void printInfo(HttpServletResponse response, String err, String newFileName) throws IOException {
		PrintWriter out = response.getWriter();
		//String filename = newFileName.substring(newFileName.lastIndexOf("/") + 1);
		out.println("{\"err\":\"" + err + "\",\"msg\":\"" + newFileName + "\"}");
		out.flush();
		out.close();
	}
	public static String getParameterByName(Iterator<FileItem> it,String key){
		Iterator i = it;
		String res="";
		while (i.hasNext()) {
			FileItem fi = (FileItem) i.next();
			//System.out.println(fi.getFieldName()+":"+fi.getString());
			if (fi.getFieldName().equals(key)) {
				res = fi.getString();
				break;
			}
		}
		return res;
	}
}



下面是xheditor的截图:



  • 大小: 73.5 KB
分享到:
评论
3 楼 kfjihailong 2013-01-07  
269565478@qq.com 求源码
2 楼 a442579302 2012-09-14  
楼主还在吗?
请问,ModelMap model, BaseQuery query  这两个参数是干什么的
1 楼 llww83 2012-06-28  
请问可以发份源码吗? 549135295@qq.com

相关推荐

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码.zip

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...

    springmvc+DWZ+ibatis

    总结来说,"springmvc+DWZ+ibatis"的整合提供了从前端到后端的完整解决方案,包括页面展示、用户交互和数据管理。这种组合在实际开发中十分常见,既能保证开发效率,又能确保应用的稳定性和可维护性。对于开发者来说...

    完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip

    完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...

    SpringMVC+Mybatis+DWZ整合例子(参考)

    1:SpringMVC+Mybatis+DWZ+Orcale整合 2:Oracle数据库账户Scott 密码123 自己根据实际情况修改 3:表在数据库里 4:只有”我的测试“一个可用,其余没做,错误页处理不完全,我注释了! 5:默认有登陆页面,账号密码...

    Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven实现的通用权限管理系统

    Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...

    springmvc+mybatis+dwz整合

    在IT行业中,构建Web应用程序是常见的任务,而`SpringMVC`、`MyBatis`和`DWZ`是三个非常流行的开源框架,用于实现这一目标。本文将深入探讨这三个框架如何协同工作,以及如何进行整合。 首先,`SpringMVC`是Spring...

    springMVC+DWZ

    在"springMVC+DWZ"的项目中,首先需要配置SpringMVC的DispatcherServlet,设置其映射路径以及加载相关的配置文件,如servlet-context.xml。接着,定义Controller,使用@RequestMapping注解来映射URL,处理HTTP请求。...

    基于SpringMVC+Hibernate实现的在线购物商城.zip

    基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+Hibernate实现的在线购物商城.zip基于springmvc+...

    图书管理系统SpringMvc+mybatis

    《图书管理系统SpringMvc+Mybatis实现详解》 在IT领域,构建高效、稳定的软件系统是至关重要的。本项目“图书管理系统”就是这样一个实例,它利用了SpringMvc和Mybatis两大主流框架,为图书管理提供了全面的解决...

    基于spring+springMVC+mybatis+easyui技术实现的医药后台管理系统

    基于spring+springMVC+mybatis+easyui技术实现的医药后台管理系统 项目描述 基于spring+springMVC+mybatis+easyui技术实现的医药管理系统 运行环境 jdk7+tomcat7+mysql+eclipse/IntelliJ IDEA+maven 项目技术...

    基于Spring+SpringMVC+Mybatis架构的博客系统.zip

    基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统.rar

    项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为...

    基于SpringMVC+Spring+MyBatis+Maven项目案例.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统

    报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,采用redis存储token及权限信息 报表前端采用Bootstrap框架,结合Jquery Ajax,...

    Java项目框架-SpringMVC+Spring+Mybatis集成开发环境

    SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+...

    基于spring+springMvc+mybatis 开发的企业门户网站

    基于spring+springMvc+mybatis 开发的企业门户网站基于spring+springMvc+mybatis 开发的企业门户网站,适合具有一定编程基础,比如计算机专业的大学生或者1-3年工作经验的开发人员。手写简化版 Spring 框架,了解 ...

    shiro+ springMVC + Redis+mysql 实现 单点登录

    "Shiro+SpringMVC+Redis+MySQL实现单点登录"是一个典型的系统安全架构,它整合了多个技术组件来构建一个高效、可靠的单点登录(Single Sign-On, SSO)解决方案。以下是关于这个主题的详细知识点: 1. **Apache ...

    基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip

    基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM...

    基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip

    3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库...

    在线投票系统-jsp+springMVC+mybatis

    在线投票系统-jsp+springMVC+mybatis在线投票系统-jsp+springMVC+mybatis在线投票系统-jsp+springMVC+mybatis在线投票...jsp+springMVC+mybatis在线投票系统-jsp+springMVC+mybatis在线投票系统-jsp+springMVC+mybatis

Global site tag (gtag.js) - Google Analytics