转载自:http://guaihubao.blog.163.com/blog/static/119235074201262155319726/
第六步:自定义接口实现CKEditor图片等文件的上传
在ckeditor根目录下创建两个jsp文件,分别为FileUpdate.jsp和FileBrowser.jsp
将如下代码写入到两个文件之中
//FileUpdate.jsp
<%@pageimport="java.io.File"%>
<%@pageimport="java.util.UUID"%>
<%@pageimport="org.apache.commons.fileupload.FileItem"%>
<%@pageimport="java.util.List"%>
<%@pageimport="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@pageimport="org.apache.commons.fileupload.FileItemFactory"%>
<%@pageimport="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@pagelanguage="java"contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=GB18030">
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<title>JSP上传文件</title>
</head>
<body>
<%
String path = request.getContextPath() + "/";
if(ServletFileUpload.isMultipartContent(request)) {
String type = "";
if(request.getParameter("type") != null)//获取文件分类
type = request.getParameter("type").toLowerCase() + "/";
String callback = request.getParameter("CKEditorFuncNum");//获取回调JS的函数Num
FileItemFactory factory = newDiskFileItemFactory();
ServletFileUpload servletFileUpload = newServletFileUpload(
factory);
servletFileUpload.setHeaderEncoding("UTF-8");//解决文件名乱码的问题
List<FileItem> fileItemsList = servletFileUpload.parseRequest(request);
for(FileItem item : fileItemsList) {
if(!item.isFormField()) {
String fileName = item.getName();
fileName = "file"+ System.currentTimeMillis()
+ fileName.substring(fileName.lastIndexOf("."));
//定义文件路径,根据你的文件夹结构,可能需要做修改
String clientPath = "UserFiles/"+ type
+ fileName;
//保存文件到服务器上
File file = newFile(request.getSession()
.getServletContext().getRealPath(clientPath));
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
item.write(file);
//打印一段JS,调用parent页面的CKEditor的函数,传递函数编号和上传后文件的路径;这句很重要,成败在此一句
out
.println("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction("
+ callback
+ ",'"
+ path
+ clientPath
+ "')</script>");
break;
}
}
}
%>
</body>
</html>
本文介绍如何为CKEditor自定义文件上传接口,通过创建FileUpdate.jsp实现图片上传功能,并使用Apache Commons FileUpload处理文件。
4435

被折叠的 条评论
为什么被折叠?



