页面代码:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="FCK" uri="http://java.fckeditor.net" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<script type="text/javascript" src="fckeditor/fckeditor.js"></script>
<link href="js/uploadify.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="js/jquery.uploadify.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#uploadify").uploadify({
'uploader' : 'js/uploadify.swf',
'script' : 'upload', //servlet的路径或者.jsp 这是访问servlet 'scripts/uploadif' 如果是.jsp,我还加上了'scriptData'和'method'
'scriptData': {'x':$("#nodeid").attr("value")},
'method':'post',
'cancelImg' : 'js/cancel.png',
'folder' : 'uploads',
'queueID' : 'fileQueue',
'auto' : true,
'multi' : false,
'buttonText': 'upload',
'simUploadLimit' : 10, //一次同步上传的文件数目
'sizeLimit' :19871202, //设置单个文件大小限制,单位为byte
'queueSizeLimit' : 10,
'fileDesc': '支持格式:jpg/gif/jpeg/png/bmp.', //如果配置了以下的'fileExt'属性,那么这个属性是必须的
'fileExt': '*.jpg;*.gif;*.jpeg;*.png',//允许的格式
onComplete: function (event, queueID, fileObj, response, data) {
var value = response ;
$("#fileQueue").html(value);
},
onError: function(event, queueID, fileObj) {
alert("文件:" + fileObj.name + "上传失败");
},
onCancel: function(event, queueID, fileObj){
alert("取消了" + fileObj.name);
}
})
})
function getEditorHTMLContents(EditorName)
{
var oEditor = FCKeditorAPI.GetInstance(EditorName);
return (oEditor.GetXHTML(true));
}
function SetEditorContents(EditorName,ContentStr)
{
var oEditor = FCKeditorAPI.GetInstance(EditorName);
oEditor.SetHTML(ContentStr);
}
function setImage(EditorName,imageName){
var oEditor = FCKeditorAPI.GetInstance(EditorName);
var contents= oEditor.GetXHTML(true);
var imgPath = contents+ "<img src ="+imageName + " />";
SetEditorContents('FCKeditor1',imgPath);
}
</script>
</head>
<body>
uThis is my JSP page <br>
<!--<script type="text/javascript">
var oFck=new FCKeditor('FCKeditor1');
oFck.BasePath="/fck1/fckeditor/";
oFck.Create();
</script>
--><form action = "result.jsp" method= "post">
<textarea name ="FCKeditor1" rows="" cols="">利用Javascript取和设FCKeditor值也是非常容易的,如下:<br />
// 获取编辑器中HTML内容<br />
function getEditorHTMLContents(EditorName) { <br />
var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
return(oEditor.GetXHTML(true)); <br />
}<br />
// 获取编辑器中文字内容<br />
function getEditorTextContents(EditorName) { <br />
var oEditor = FCKeditorAPI.GetInstance(EditorName); <br />
return(oEditor.EditorDocument.body.innerText); <br />
}<br />
// 设置编辑器中内容<br />
function SetEditorContents(EditorName, ContentStr) { <br /></textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor( 'FCKeditor1' ) ;
oFCKeditor.BasePath = "/fck1/fckeditor/";
oFCKeditor.Value ='' ;
oFCKeditor.Height = 400 ;
oFCKeditor.Width = 500 ;
oFCKeditor.ReplaceTextarea() ;
</script>
<br />
<input type="submit" value="获取值" οnclick="document.getElementById('txtContent').value = getEditorHTMLContents('FCKeditor1'); return false;"/>
<br />
<input id="txtContent" type="text" />
<input type="submit" value="设置值" />
<input type="button" value="图片超链接" οnclick="setImage('FCKeditor1','test.jpg')"/>
</form>
<div id="fileQueue"></div>
<input type="file" name="uploadify" id="uploadify" />
<p>
<a href="javascript:$('#uploadify').uploadifyUpload()">开始上传</a>
<a href="javascript:$('#uploadify').uploadifyClearQueue()">取消所有上传</a></p>
<input type="text" name="nodeid" id="nodeid" value="inputtxtvalue" />
</body>
</html>
后台Servlet处理方法:
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
System.out.println("request:"+request.getParameterNames());
Map map = request.getParameterMap();
System.out.println(map.size());
System.out.println(map.keySet().toString());
String savePath = this.getServletConfig().getServletContext()
.getRealPath("");
savePath = savePath + "/uploadsFolder/";
File f1 = new File(savePath);
System.out.println(savePath);
if (!f1.exists()) {
f1.mkdirs();
}
DiskFileItemFactory fac = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(fac);
upload.setHeaderEncoding("utf-8");
List fileList = null;
try {
fileList = upload.parseRequest(request);
System.out.println(request.getParameter("uploadify"));
} catch (FileUploadException ex) {
return;
}
Iterator<FileItem> it = fileList.iterator();
String name = "";
String extName = "";
while (it.hasNext()) {
FileItem item = it.next();
if (!item.isFormField()) {
name = item.getName();
System.out.println("文件name:"+item.getFieldName());
System.out.println("文件ContentType:"+item.getContentType());
System.out.println("文件size:"+item.getSize());
long size = item.getSize();
String type = item.getContentType();
System.out.println(size + " " + type);
if (name == null || name.trim().equals("")) {
continue;
}
//扩展名格式:
if (name.lastIndexOf(".") >= 0) {
extName = name.substring(name.lastIndexOf("."));
}
File file = null;
do {
//生成文件名:
name = UUID.randomUUID().toString();
file = new File(savePath + name + extName);
} while (file.exists());
File saveFile = new File(savePath + name + extName);
try {
item.write(saveFile);
} catch (Exception e) {
e.printStackTrace();
}
}
}
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
System.out.println(basePath+"uploadsFolder/"+name + extName);
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("<a href = '");
stringBuffer.append(basePath+"uploadsFolder/"+name + extName);
stringBuffer.append(" '>"+basePath+"uploadsFolder/"+name + extName+"</a>");
stringBuffer.append("<input type = 'button' value = '插入正文' οnclick=/"setImage('FCKeditor1','"+path+"/uploadsFolder/"+name + extName+"')/"/>");
System.out.println(stringBuffer.toString());
response.getWriter().print(stringBuffer.toString());