当前位置:编程学习 > JS >>

kingeditor(jsp)与SSH三大框架整合上传图片出错问题解决方案

最近使用kindeditor4.1编辑文章,发现上传图片发生错误,而上传flash文件以及媒体文件可以上传成功。我也不得其解,通过查找大量资料得知,是struts框架对request对象做了封装,upload_json.jsp文件可以不用任何修改,修改web.xml文件中有关action路径就可以了,如下:  <filter-mapping>  
      <filter-name>struts2</filter-name>  
      <url-pattern>*.action</url-pattern>  
  </filter-mapping>

就可以正常得到request中的内容.

或者你理解得够透彻时间充裕且感兴趣的话,可以重写下面的upload_json.jsp文件,顺便给我发一份啊,哈哈!

upload_json.jsp

 
001
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
002
<%@ page import="java.util.*,java.io.*" %>
003
<%@ page import="java.text.SimpleDateFormat" %>
004
<%@ page import="org.apache.commons.fileupload.*" %>
005
<%@ page import="org.apache.commons.fileupload.disk.*" %>
006
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
007
<%@ page import="org.json.易做图.*" %>
008
<%
009
 
010
/**
011
 * KindEditor JSP
012
 *
013
 * 本JSP程序是演示程序,建议不要直接在实际项目中使用。
014
 * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
015
 *
016
 */
017
 
018
//文件保存目录路径
019
String savePath = pageContext.getServletContext().getRealPath("/") + "attached/";
020
 
021
//文件保存目录URL
022
String saveUrl  = request.getContextPath() + "/attached/";
023
 
024
//定义允许上传的文件扩展名
025
HashMap<String, String> extMap = new HashMap<String, String>();
026
extMap.put("image", "gif,jpg,jpeg,png,bmp");
027
extMap.put("flash", "swf,flv");
028
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
029
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
030
 
031
//最大文件大小
032
long maxSize = 2000000000;
033
 
034
response.setContentType("text/html; charset=UTF-8");
035
 
036
if(!ServletFileUpload.isMultipartContent(request)){
037
    out.println(getError("请选择文件。"));
038
    return;
039
}
040
//检查目录
041
File uploadDir = new File(savePath);
042
if(!uploadDir.isDirectory()){
043
    out.println(getError("上传目录不存在。"));
044
    return;
045
}
046
//检查目录写权限
047
if(!uploadDir.canWrite()){
048
    out.println(getError("上传目录没有写权限。"));
049
    return;
050
}
051
 
052
String dirName = request.getParameter("dir");
053
if (dirName == null) {
054
    dirName = "image";
055
}
056
if(!extMap.containsKey(dirName)){
057
    out.println(getError("目录名不正确。"));
058
    return;
059
}
060
//创建文件夹
061
savePath += dirName + "/";
062
saveUrl += dirName + "/";
063
File saveDirFile = new File(savePath);
064
if (!saveDirFile.exists()) {
065
    saveDirFile.mkdirs();
066
}
067
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
068
String ymd = sdf.format(new Date());
069
savePath += ymd + "/";
070
saveUrl += ymd + "/";
071
File dirFile = new File(savePath);
072
if (!dirFile.exists()) {
073
    dirFile.mkdirs();
074
}
075
 
076
FileItemFactory factory = new DiskFileItemFactory();
077
ServletFileUpload upload = new ServletFileUpload(factory);
078
upload.setHeaderEncoding("UTF-8");
079
List items = upload.parseRequest(request);
080
Iterator itr = items.iterator();
081
while (itr.hasNext()) {
082
    FileItem item = (FileItem) itr.next();
083
    String fileName = item.getName();
084
    long fileSize = item.getSize();
085
    if (!item.isFormField()) {
086
        //检查文件大小
087
        if(item.getSize() > maxSize){
088
            out.println(getError("上传文件大小超过限制。"));
089
            return;
090
        }
091
        //检查扩展名
092
        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
093
        if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
094
            out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
095
            return;
096
        }
097
 
098
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
099
        String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
100
        try{
101
            File uploadedFile = new File(savePath, newFileName);
102
            item.write(uploadedFile);
103
        }catch(Exception e){
104
            out.println(getError("上传文件失败。"));
105
            return;
106
        }
107
 
108
        JSONObject obj = new JSONObject();
109
        obj.put("error", 0);
110
        obj.put("url", saveUrl + newFileName);
111
        out.println(obj.toJSONString());
112
    }
113
}
114
%>
115
<%!
116
private String getError(String message) {
117补充:Web开发 , Jsp ,

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,