2013年9月2日星期一

List items = upload.parseRequest (request); empty kindeditorSpringMvc

This is the original kindeditor original jsp file this is an easy to use too

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.io.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.json.simple.*" %>
<%

/**
* KindEditor JSP
*
* 本JSP程序是演示程序,建议不要直接在实际项目中使用。
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
*
*/

//文件保存目录路径
String savePath = pageContext.getServletContext().getRealPath("/") + "attached/";
System.out.print(savePath);
//文件保存目录URL
String saveUrl  = request.getContextPath() + "/attached/";
//定义允许上传的文件扩展名
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("image", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");

//最大文件大小
long maxSize = 1000000;

response.setContentType("text/html; charset=UTF-8");

if(!ServletFileUpload.isMultipartContent(request)){
out.println(getError("请选择文件。"));
return;
}
//检查目录
File uploadDir = new File(savePath);
if(!uploadDir.isDirectory()){
out.println(getError("上传目录不存在。"));
return;
}
//检查目录写权限
if(!uploadDir.canWrite()){
out.println(getError("上传目录没有写权限。"));
return;
}

String dirName = request.getParameter("dir");
if (dirName == null) {
dirName = "image";
}
if(!extMap.containsKey(dirName)){
out.println(getError("目录名不正确。"));
return;
}
//创建文件夹
savePath += dirName + "/";
saveUrl += dirName + "/";
File saveDirFile = new File(savePath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
long fileSize = item.getSize();
if (!item.isFormField()) {
//检查文件大小
if(item.getSize() > maxSize){
out.println(getError("上传文件大小超过限制。"));
return;
}
//检查扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
return;
}

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try{
File uploadedFile = new File(savePath, newFileName);
item.write(uploadedFile);
}catch(Exception e){
out.println(getError("上传文件失败。"));
return;
}

JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newFileName);
out.println(obj.toJSONString());
}
}
%>
<%!
private String getError(String message) {
JSONObject obj = new JSONObject();
obj.put("error", 1);
obj.put("message", message);
return obj.toJSONString();
}
%>

and then I want to convert SpringMvc form I have created a controller code DEBUG a moment everything is normal I found List items = upload.parseRequest (request); as empty who encountered to help solve this problem


package com.gmako.controller;
import java.util.*;
import java.io.*;
import java.text.SimpleDateFormat;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import org.json.simple.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/uploadJson.do")
public class UploadJson {
@RequestMapping(params = "method=editHouseinfo")
public ModelAndView editHouseinfo(HttpServletRequest request,HttpServletResponse response){
System.out.println("成功得第tmd步uploadjson");
return new ModelAndView("MyJsp");
}
@RequestMapping
public void testCon(HttpServletRequest request,HttpServletResponse response) throws IOException{
System.out.println("成功得第一步uploadjson");
/**
* KindEditor JSP
*
* 本JSP程序是演示程序,建议不要直接在实际项目中使用。
* 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。
*
*/

//文件保存目录路径
String savePath = request.getSession().getServletContext().getRealPath("/") + "images/";
//文件保存目录URL
String saveUrl  = request.getContextPath() + "/images/";

//定义允许上传的文件扩展名
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("image", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");

//最大文件大小
long maxSize = 1000000;

response.setContentType("text/html; charset=UTF-8");

if(!ServletFileUpload.isMultipartContent(request)){
response.getWriter().print(getError("请选择文件。"));
return ;
}
//检查目录
File uploadDir = new File(savePath);
if(!uploadDir.isDirectory()){
response.getWriter().print(getError("上传目录不存在。"));
return ;
}
//检查目录写权限
if(!uploadDir.canWrite()){
response.getWriter().print(getError("上传目录没有写权限。"));
return ;
}
String dirName = request.getParameter("dir");
if (dirName == null) {
dirName = "image";
}
if(!extMap.containsKey(dirName)){
response.getWriter().print(getError("目录名不正确。"));
return ;
}
//创建文件夹
savePath += dirName + "/";
saveUrl += dirName + "/";
File saveDirFile = new File(savePath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items;
try {
items = upload.parseRequest(request);

System.out.println("我有这么大还不能下一步"+items.size());
Iterator itr = items.iterator();
while (itr.hasNext()) {
System.out.println("111WHILE");
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
long fileSize = item.getSize();
if (!item.isFormField()) {
//检查文件大小
if(item.getSize() > maxSize){
response.getWriter().print(getError("上传文件大小超过限制。"));
return ;
}
//检查扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
response.getWriter().print(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
return ;
}

SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try{
File uploadedFile = new File(savePath, newFileName);
item.write(uploadedFile);
}catch(Exception e){
response.getWriter().print(getError("上传文件失败。"));
return ;
}

JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newFileName);
System.out.println("成功上传图片");
response.getWriter().print(obj.toJSONString());
}
}
} catch (FileUploadException e1) {
// TODO Auto-generated catch block
System.out.println("error");
e1.printStackTrace();

}
response.getWriter().print("zuihouhaizuo");
return;
}
private String getError(String message) {
JSONObject obj = new JSONObject();
obj.put("error", 1);
obj.put("message", message);
return obj.toJSONString();
}
}

first post formats perhaps not consistent with the public viewing habits have also requested exhibitions
------ Solution ------------- -------------------------------
does not solve this problem I have encountered this problem lz ah
------ Solution ------------------------------------------ -
this problem , generally because of InputStream has been struts2 to read ahead over ( because it wants to help you check whether there is the need to deal with VO value object class )

So after studying less things.


processing method, see here :
http://auzll.iteye.com/blog/919981



------ Solution ------------------------------------ --------
FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setHeaderEncoding("UTF-8");
        List items;
        try {
            items = upload.parseRequest(request);
        .....................



This factory is just new out, so upload it just an empty object , upload.parseRequest (request) should be empty, no problem.
landlord here upload objects should not be so established fishes .
------ Solution ---------------------------------------- ----

used springmvc
------ For reference only ------------------------ ---------------
no one is using the text editor indeditor what nobody uses SpringMvc what the answer is yes too Furthermore, there are many but the two combined together again so small it was a day are no buyers ah
------ For reference only ----------- ----------------------------
3 floor, I use springmvc just three months into the line has not been used struts2 I feel the 4th floor is a positive solution I try
------ For reference only ---------------------- -----------------
4 F, I learned a long time does not help you write about the
------ For reference only - -------------------------------------
did not solve ah honed too many things are copying and pasting it really was so engaged in strenuous ah
------ For reference only -------------------- -------------------
to use jsp can also be used inside the springmvc
------ For reference only ----- ----------------------------------
why the same code written in a servlet is no problem , However, when it replaced spingMVC problems mentioned above .
how to solve ?
------ For reference only -------------------------------------- -
expect answers
------ For reference only -------------------------------- -------
encountered the same problem ?
------ For reference only ------------------------------------ ---
expect answers .....
------ For reference only --------------------- ------------------
answer where someone knows no
------ For reference only --------- ------------------------------
rub , the landlord did not solve ? Today, I used to use struts good today with springMVC encountered the same problem you , Guiqiu answer

3 条评论:

  1. That is a really gold tip particularly to those fresh to the blogosphere.

    Simple but very accurate information… Many thanks for sharing
    this one. A must read article!

    My webpage - trials frontier hack download (Trialsfrontierhack.com)

    回复删除
  2. This is a topic which is close to my heart... Many thanks!
    Exactly where are your contact details though?



    Feel free to surf to my site: Japanese Massage London (Elgg.Melzian.Net)

    回复删除
  3. I know this website offers quality based articles or reviews and extra data, is there
    any other website which gives these kinds of things
    in quality?

    Here is my web-site; facial massager

    回复删除