`
h5566h
  • 浏览: 74505 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

xhEditor文件上传的Java - Servlet实现.

阅读更多

转载别人的,自己稍作了备注和修改

package upload.img;

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

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

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.lang.StringUtils;

/**
 *c
 * 
 * @author easinchu
 * 
 */
@SuppressWarnings( { "serial", "deprecation" })
public class UploadImg extends HttpServlet {

	private static String baseDir = "centerupload/";// 上传文件存储目录
	private static String fileExt = "jpg,jpeg,bmp,gif,png";
	private static Long maxSize = 0l;

	

	// 0:不建目录 1:按天存入目录 2:按月存入目录 3:按扩展名存目录 建议使用按天存
	private static String dirType = "1";

	/**
	 * 文件上传初始化工作
	 */
	public void init() throws ServletException {
		/* 获取web.xml中servlet的配置文件目录参数 */
		baseDir = this.getInitParameter("baseDir");

		/* 获取文件上传存储的相对路径 */
		if (StringUtils.isBlank(baseDir))
			baseDir = "centerupload/";


		/* 获取文件类型参数 */
		fileExt = this.getInitParameter("fileExt");
		if (StringUtils.isBlank(fileExt))
			fileExt = "jpg,jpeg,gif,bmp,png";

		/* 获取文件大小参数 */
		String maxSize_str = this.getInitParameter("maxSize");
		if (StringUtils.isNotBlank(maxSize_str))
			maxSize = new Long(maxSize_str);

		/* 获取文件目录类型参数 */
		dirType = this.getInitParameter("dirType");

		if (StringUtils.isBlank(dirType))
			dirType = "1";
		if (",0,1,2,3,".indexOf("," + dirType + ",") < 0)
			dirType = "1";
	}

	/**
	 * 上传文件数据处理过程
	 */
	@SuppressWarnings( { "unchecked" })
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		response.setHeader("Cache-Control", "no-cache");

		String err = "";
		String newFileName = "";


		DiskFileUpload upload = new DiskFileUpload();
		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);
			}

			/* 获取表单的上传文件 */
			FileItem uploadFile = (FileItem) fields.get("filedata");

			/* 获取文件上传路径名称 */
			String fileNameLong = uploadFile.getName();
			String fileRealName = fileNameLong.substring(fileNameLong
					.lastIndexOf("\\") + 1);
			// System.out.println("fileRealName:" + fileRealName);

			/* 获取文件扩展名 */
			/* 索引加1的效果是只取xxx.jpg的jpg */
			String extensionName = fileNameLong.substring(fileNameLong
					.lastIndexOf(".") + 1);
			// System.out.println("extensionName:" + extensionName);

			/* 检查文件类型 */
			// 此处取消了对类型的检查,把类型检查交给xhEditor 去检查
			/*
			 * if (("," + fileExt.toLowerCase() + ",").indexOf("," +
			 * extensionName.toLowerCase() + ",") < 0){ printInfo(response,
			 * "不允许上传此类型的文件", ""); return; }
			 */

			/* 文件是否为空 */
			if (uploadFile.getSize() == 0) {
				printInfo(response, "上传文件不能为空", "");
				return;
			}
			/* 检查文件大小 */
			if (maxSize > 0 && uploadFile.getSize() > maxSize) {
				printInfo(response, "上传文件的大小超出限制", "");
				return;
			}

			// 0:不建目录, 1:按天存入目录, 2:按月存入目录, 3:按扩展名存目录.建议使用按天存.
			String fileFolder = "";
			if (dirType.equalsIgnoreCase("1"))
				fileFolder = new SimpleDateFormat("yyyyMMdd")
						.format(new Date());			
			if (dirType.equalsIgnoreCase("2"))
				fileFolder = new SimpleDateFormat("yyyyMM").format(new Date());
			if (dirType.equalsIgnoreCase("3"))
				fileFolder = extensionName.toLowerCase();

			/* 文件存储的相对路径 */
			String saveDirPath = "/" + baseDir + fileFolder + "/";
			// System.out.println("saveDirPath:" + saveDirPath);

			/* 文件存储在容器中的绝对路径 */
			String saveFilePath = this.getServletConfig().getServletContext().getRealPath("");//获得工程所在的路径
			String saveRealFilePath = saveFilePath.substring(0,saveFilePath.lastIndexOf("\\"))+saveDirPath;//获得路径后,跳出工程所在的文件夹
			//System.out.println("saveRealFilePath:" + saveRealFilePath);

			/* 构建文件目录以及目录文件 */
			File fileDir = new File(saveRealFilePath);
			if (!fileDir.exists()) {
				fileDir.mkdirs();
			}

			/* 重命名文件 */
			String filename = UUID.randomUUID().toString();
			File savefile;
			savefile = new File(saveRealFilePath +filename + "." + extensionName);

			/* 存储上传文件 */			
			uploadFile.write(savefile);

			// 这个地方根据项目的不一样,需要做一些特别的定制。
			//文件在服务器上的相对路径
			newFileName = baseDir + fileFolder + "/" + filename + "." + extensionName;
			// System.out.println("newFileName:" + newFileName);
		} 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();
	}


}

 

分享到:
评论

相关推荐

    xhEditor文件上传的Java实现.pdf

    xhEditor文件上传的Java实现.pdf

    xheditor-0.9.8-zh-cn

    xheditor-0.9.8-zh-cn.zip 编辑器xheditor-0.9.8-zh-cn.zip 编辑器xheditor-0.9.8-zh-cn.zip 编辑器xheditor-0.9.8-zh-cn.zip 编辑器xheditor-0.9.8-zh-cn.zip 编辑器

    xheditor-1.2.2.zip

    xheditor-1.2.2.zip

    xhEditor编辑器

    将下载的压缩文件解压缩,上传其中的xheditor-zh-cn.min.js以及xheditor_emot、xheditor_plugins和xheditor_skin三个文件夹到网站相应文件夹中。 注:如果您网站中没有使用jQuery框架,也请一并上传jquery文件夹中的...

    xhEditor编辑器v1.2.2简体中文

    xhEditor是一个基于jQuery开发的简单迷你并且高效的在线可视化HTML编辑器,... xhEditor完全基于Javascript开发,您可以应用在任何的服务端语言环境下,例如:PHP、ASP、ASP.NET、JAVA等。 xhEditor可以在您的CMS、博客

    xhEditor编缉器下使用java上传的类文件

    xhEditor编缉器,用于java开发时,上传文件,同时解决了在火狐上使用时报错的问题,主要是因为火狐上传时使用的是HTML5,如何解决请花1分吧!! 记得把xheditor里的上传改成servlet的路径呀!!

    xheditor-1.1.1编辑器下载

    xheditor编辑器.................xheditor编辑器.................xheditor编辑器.................xheditor编辑器.................xheditor编辑器.................

    xhEditor编辑器V0.97示例webform.rar

    xhEditor编辑器V0.97示例webform.rar

    ASP.NET应用Xheditor上传图片 jquery-1.11.0

    xheditor-1.2.1 上传图片 jquery版本:jquery-1.11.0 ASP.NET环境

    最土团购商业wap版测试可以

    inflating: zuitu/static/js/xheditor/xheditor_emot/default/awkward.gif inflating: zuitu/static/js/xheditor/xheditor_emot/default/bye.gif inflating: zuitu/static/js/xheditor/xheditor_emot/default/...

    js文件编辑器

    js文本编辑器,有使用例子,xheditor-1.1.12-zh-cn.min.js

    dokuwiki2020-07-29Hogfather.zip

    适合搭建wiki文档管理服务器参考代码

    xheditor 1.2.2.zip

    内置强大的Ajax上传,包括HTML4和HTML5上传支持(多文件上传、真实上传进度及文件拖放上传),追求完美的用户上传体验。 Word完美支持 实现Word代码自动检测并清理,提供高效完美的Word代码过滤方案,生成代码最优化...

    xheditor-1.2.1.7z

    xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化HTML编辑器,基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。

    xheditor-1.1.14

    如果想实现更加复杂的交互应用,或者希望xhEditor编辑器能够和自己的Javascript代码实现互相访问,那么你可以选择使用方法2,相对具有更大的自由空间。 xhEditor也提供了即时的卸载编辑器方法: $('#elm1')....

    jquery.xheditor和jquery,uploadify实现文件上传完整实例

    jquery xheditor是jquery中较好的编辑器插件,而jquery.uploadify也是jquery实现文件上传很优秀的插件,本项目实例解决了两个插件文件上传的问题,对于应用学习两个插件,实现文件上传,具有很好的参考价值,同时本例子是...

    xheditor for java

    java 下使用xheditor,可实现数据存储于数据库中,并实现即见即所得显示在页面,便于批量排版

    xheditor1.1.14

    xheditor-1.1.14.zip

    xheditor编辑器实现图片上传

    基于轻量级的JQuery的xheditor编辑器+jsp实现图上传功能

Global site tag (gtag.js) - Google Analytics