基于http://www.iteye.com/topic/692396
修正了项目路径自动获取,解决了在windows环境下的路径问题
package com.xheditor.servlet;
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.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;
@SuppressWarnings({ "serial", "deprecation" })
public class UploadFileServlet extends HttpServlet {
private static String baseFileDir = File.separator + "upload" + File.separator;//上传文件存储目录
private static String baseURLDir = "/upload/";//上传文件目录URL
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 {
/*获取文件上传存储的相当路径*/
if (!StringUtils.isBlank(this.getInitParameter("baseDir"))){
baseFileDir = this.getInitParameter("baseDir");
}
String realBaseDir = this.getServletConfig().getServletContext().getRealPath(baseFileDir);
File baseFile = new File(realBaseDir);
if (!baseFile.exists()) {
baseFile.mkdir();
}
/*获取文件类型参数*/
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();
System.out.println("fileNameLong:" + fileNameLong);
/*获取文件扩展名*/
/*索引加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 (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 = baseFileDir + fileFolder + "/";
System.out.println("saveDirPath:" + saveDirPath);
/*文件存储在容器中的绝对路径*/
String saveFilePath = this.getServletConfig().getServletContext().getRealPath("") + baseFileDir + fileFolder + "/";
System.out.println("saveFilePath:" + saveFilePath);
/*构建文件目录以及目录文件*/
File fileDir = new File(saveFilePath);
if (!fileDir.exists()) {fileDir.mkdirs();}
/*重命名文件*/
String filename = UUID.randomUUID().toString();
File savefile = new File(saveFilePath + filename + "." + extensionName);
/*存储上传文件*/
System.out.println(upload == null);
uploadFile.write(savefile);
String projectBasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
newFileName = projectBasePath + baseURLDir + 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();
}
}
前台页
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="xheditor-1.1.7/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="xheditor-1.1.7/xheditor-1.1.7-zh-cn.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//初始化xhEditor编辑器插件
$('#xh_editor').xheditor({
tools:'full',
skin:'default',
upMultiple:true,
upImgUrl: "servlet/UploadFileServlet",
upImgExt: "jpg,jpeg,gif,bmp,png",
onUpload:insertUpload,
html5Upload:false
});
//xbhEditor编辑器图片上传回调函数
function insertUpload(msg) {
var _msg = msg.toString();
var _picture_name = _msg.substring(_msg.lastIndexOf("/")+1);
var _picture_path = Substring(_msg);
var _str = "<input type='checkbox' name='_pictures' value='"+_picture_path+"' checked='checked' onclick='return false'/><label>"+_picture_name+"</label><br/>";
$("#xh_editor").append(_msg);
$("#uploadList").append(_str);
}
//处理服务器返回到回调函数的字符串内容,格式是JSON的数据格式.
function Substring(s){
return s.substring(s.substring(0,s.lastIndexOf("/")).lastIndexOf("/"),s.length);
}
});
</script>
</head>
<body>
<form action="" method="post">
<div>
<textarea id="xh_editor" name="contents" rows="25" style="width:100%; border: 1px"></textarea>
</div>
<div id="uploadList"></div>
</form>
</body>
</html>
demo见附件
分享到:
相关推荐
xhEditor编缉器,用于java开发时,上传文件,同时解决了在火狐上使用时报错的问题,主要是因为火狐上传时使用的是HTML5,如何解决请花1分吧!! 记得把xheditor里的上传改成servlet的路径呀!!
xhEditor文件上传的Java实现.pdf
用于xheditor编辑器上传功能的配置文件 upload.aspx,直接下载拷贝到项目根目录下即可。 里面的该行: string attachdir ="../upload"; 是上传路径,根据实际引用xheditor的页面位置,要进行相应的修改,要不然无法...
java 下使用xheditor,可实现数据存储于数据库中,并实现即见即所得显示在页面,便于批量排版
jquery xheditor是jquery中较好的编辑器插件,而jquery.uploadify也是jquery实现文件上传很优秀的插件,本项目实例解决了两个插件文件上传的问题,对于应用学习两个插件,实现文件上传,具有很好的参考价值,同时本例子是...
基于轻量级的JQuery的xheditor编辑器+jsp实现图上传功能
java版 xheditor富文本编辑器,个人认为比fckeditor好用且美观。实现了图片上传功能。示例为myeclipse工程,导入即可用。
xheditor-1.2.1 上传图片 jquery版本:jquery-1.11.0 ASP.NET环境
参数值:接收用户上传的服务器端程序URL,默认留空为禁用超链接上传功能,具体使用方法请参考demo8演示文件 注:可使用内置变量:{editorRoot},代表当前编辑器的根路径,例:{editorRoot}upload.php upLinkExt:...
在xheditor在线编辑器下,ASP提交远程图片自动上传到服务器
参考博文:http://blog.csdn.net/itmyhome1990/article/details/38491205
xheditor Java代码 火狐 ie 支持
最新版本xheditor-v1.2.2
1 .修改多处引用 每次都要手动的写入大量的JS ...上传的文件信息保存到数据库 且返回文件Id 及名称 4 .增加Google地图 插入图片 5 .上传附件及Google地图 为自定义的插件开发 使用 C# 语言的可以关注下
xheditor修改版 解决上传宽高为aoto的bug jquery-1.6 某些浏览器版本下,xheditor上传图片后会默认添加 width=“auto” height=“auto” 导致图片无法显示。
XHEditor是一款JS+JQuery的编辑器,前台使用方便,占有资料小。本例有具体的上传代码,适合XHEditor的入门
xheditor是非常实用的web应用在线编辑器,本程序通过jsp/java实现,可上传图片、视频、远程抓图上传(如QQ截图后直接粘贴在编辑器后自动上传到服务器保存),非常方便、实用。
内置强大的Ajax上传,包括HTML4和HTML5上传支持(多文件上传、真实上传进度及文件拖放上传),追求完美的用户上传体验。 Word完美支持 实现Word代码自动检测并清理,提供高效完美的Word代码过滤方案,生成代码最优化...
1.上传附件根目录下的face和prettify文件夹上传到你的网站根目录 2.把附件里面的akcms后台/include/xh下面的文件都复制到你网站对应的xh目录下. 最后,因为使用了高亮代码功能.那么在您的内容模板里面需要插入2段...