SpringMVC + Kindeditor时List items = upload.parseRequest(request);为空

来源:互联网 发布:约爱是什么软件 编辑:程序博客网 时间:2024/05/18 01:12

问题描述: 根据Kindeditor给的demo,结合SpringMVC使用时,

List items = upload.parseRequest(request);
item始终为空。

@Controller@IfNeedLogin(needLogin = false)@RequestMapping("/kindeditor")public class KEUploadController extends BaseController {private Logger logger = LoggerFactory.getLogger(KEUploadController.class);@RequestMapping(value = "/upload", method = { RequestMethod.GET,RequestMethod.POST })public void upload(HttpServletRequest request, HttpServletResponse response)throws FileUploadException, IOException {logger.debug("Kindeditor上传文件");PrintWriter writer = response.getWriter();ServletContext servletContext = request.getSession().getServletContext();// 文件保存目录路径String savePath = servletContext.getRealPath("/") + "attached/";// 文件保存目录URLString 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)) {writer.println(getError("请选择文件。"));return;}// 检查目录File uploadDir = new File(savePath);if (!uploadDir.isDirectory()) {writer.println(getError("上传目录不存在。"));return;}// 检查目录写权限if (!uploadDir.canWrite()) {writer.println(getError("上传目录没有写权限。"));return;}String dirName = request.getParameter("dir");if (dirName == null) {dirName = "image";}if (!extMap.containsKey(dirName)) {writer.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) {writer.println(getError("上传文件大小超过限制。"));return;}// 检查扩展名String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();if (!Arrays.<String> asList(extMap.get(dirName).split(",")).contains(fileExt)) {writer.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) {writer.println(getError("上传文件失败。"));return;}JSONObject obj = new JSONObject();obj.put("error", 0);obj.put("url", saveUrl + newFileName);writer.println(obj.toJSONString());}}}private String getError(String message) {JSONObject obj = new JSONObject();obj.put("error", 1);obj.put("message", message);return obj.toJSONString();}}

解决方案1:

去掉配置文件:

 <!-- 上传文件时需要做的配置 -->  <!--     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">          <property name="maxUploadSize" value="5000000"></property>        <property name="maxInMemorySize" value="4096" />      <property name="defaultEncoding" value="UTF-8" />      </bean> -->

0 1
原创粉丝点击