本人在struts2项目中使用了kindeditor3.4.3,在windows下可以正常上传图片,但是部署到linux下上传图片总是提示“服务器发生故障”。
一、项目目录结构
二、做过的修改
1、修改了保存路径用"/"代替了"//"
2、修改了保存目录的权限为可写可读
但是,一直不能解决问题,特在贵宝地发帖,请求各位高手的帮助!
三、相关文件代码
1、kindedit\meditor.htm文件部分代码
KE.show({
id : 'content1',
tid:tid,
imageUploadJson : '/kindedit/struts2Upload.jsp',
fileManagerJson : '/kindedit/file_manager_json.jsp',
allowFileManager : true,
afterCreate : function(id) {
KE.event.ctrl(document, 13, function() {
KE.util.setData(id);
});
KE.event.ctrl(KE.g[id].iframeDoc, 13, function() {
KE.util.setData(id);
});
}
});
2、kindedit\plugins\image\image.html文件修改如下:
var imageUploadJson = (typeof KE.g[id].imageUploadJson == 'undefined') ? '../../kindedit/struts2Upload.jsp' : KE.g[id].imageUploadJson;
3、上传图片文件(struts2Upload.jsp)的代码如下:
<%@ page language="java" pageEncoding="GBK"%>
<%@page import="java.io.*,org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper,java.util.concurrent.locks.*"%>
<%
//Struts2 请求 包装过滤器
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
// 获得上传的文件名
String fileName = wrapper.getFileNames("imgFile")[0];
//获得未见过滤器
File file = wrapper.getFiles("imgFile")[0];
//----------- 重新构建上传文件名----------------------
final Lock lock = new ReentrantLock();
String newName = null;
lock.lock();
try {
//加锁为防止文件名重复
newName = System.currentTimeMillis()
+ fileName.substring(fileName.lastIndexOf("."),
fileName.length());
}finally {
lock.unlock();
}
//------------ 锁结束 -------------
//获取文件输出流
FileOutputStream fos = new FileOutputStream(request.getSession()
.getServletContext().getRealPath("/")
+ "attached/" + newName);
//设置 KE 中的图片文件地址
String newFileName = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ request.getContextPath() + "/attached/" + newName;
System.out.println(newFileName);
byte[] buffer = new byte[1024];
//获取内存中当前文件输入流
InputStream in = new FileInputStream(file);
try {
int num = 0;
while ((num = in.read(buffer)) > 0) {
fos.write(buffer, 0, num);
}
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
in.close();
fos.close();
}
//发送给KE
out.println("<html><head><title>Insert Image</title><meta http-equiv='content-type' content='text/html; charset=gbk'/></head><body>");
out.println("<script type='text/javascript'>");
out.println("parent.parent.KE.plugin['image'].insert('"
+ wrapper.getParameter("id") + "','" + newFileName + "','"
+ wrapper.getParameter("imgTitle") + "','"
+ wrapper.getParameter("imgWidth") + "','"
+ wrapper.getParameter("imgHeight") + "','"
+ wrapper.getParameter("imgBorder") + "','"
+ wrapper.getParameter("align") + "');</script>");
out.println("</body></html>");
%>