程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> kingeditor(jsp)與SSH三大框架整合上傳圖片出錯問題解決方案

kingeditor(jsp)與SSH三大框架整合上傳圖片出錯問題解決方案

編輯:關於JSP

最近使用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.simple.*" %>
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
    JSONObject obj = new JSONObject();
118
    obj.put("error", 1);
119
    obj.put("message", message);
120
    return obj.toJSONString();
121
}
122
%>


作者:larch

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved