cuixf2000的gravatar头像
cuixf2000 2014-09-04 15:13:05

关于springmvc文件上传的问题

我写了一个程序,在做文件上传时经常报Processing of multipart/form-data request failed. Stream ended unexpectedly,在网上搜了好久没找到合适的答案,求大神指点指点。

程序源码为:

 public void processUploadPost(ModelMap modelMap,  
            HttpServletRequest request, HttpServletResponse response, @RequestParam MultipartFile upload) throws FileUploadException {  
  
        // 判断提交的请求是否包含文件  
//        boolean isMultipart = ServletFileUpload.isMultipartContent(request);  
  
        if (upload.isEmpty()) {  
            return;  
        }  
  
        // 获取目录  
        File floder = buildFolder(request);  
        if (null == floder) {  
            return;  
        }  
  
        try {  
            response.setContentType("text/html; charset=UTF-8");  
            response.setHeader("Cache-Control", "no-cache");  
            PrintWriter out = response.getWriter();  
            // 上传文件的返回地址  
            String fileUrl = "";  
 
            MultipartFile file = upload;  
                String fileClientName = getFileName(file.getOriginalFilename());  
                String fileFix = upload.getContentType();  
                if (!StringUtils.equalsIgnoreCase(fileFix, "image/jpg")  
                        && !StringUtils.equalsIgnoreCase(fileFix, "image/jpeg")  
                        && !StringUtils.equalsIgnoreCase(fileFix, "image/bmp")  
                        && !StringUtils.equalsIgnoreCase(fileFix, "image/gif")  
                        && !StringUtils.equalsIgnoreCase(fileFix, "image/png")) {  
                    logger.error("上传文件的格式错误=" + fileFix);  
                    return;  
                }  
                String MD5Name = MD5Util.getMD5String(upload.getBytes());
                String typename = upload.getContentType().split("/")[1];
		        String fileName = MD5Name+"."+typename;
                if (logger.isInfoEnabled()) {  
                    logger.info("开始上传文件:" + fileName);  
                }  
  
                // 为了客户端已经设置好了图片名称在服务器继续能够明确识别,这里不改名称  
                File newfile = new File(floder, fileName);  
                file.transferTo(newfile);  
  
                if (logger.isInfoEnabled()) {  
                    logger.info("上传文件结束,新名称:" + fileClientName + ".floder:"  
                            + newfile.getPath());  
                }  
 
               // 组装返回url,以便于ckeditor定位图片  
                String path = request.getContextPath();
                fileUrl = path+FOR_FREEMARKER_LOAD_DIR + FILE_UPLOAD_DIR + FILE_UPLOAD_SUB_IMG_DIR + "/"+floder.getName()+"/"+ newfile.getName();  
                String callback = request.getParameter("CKEditorFuncNum");  
                out.println("<script type='text/javascript'> window.parent.CKEDITOR.tools.callFunction('"  
                        + callback + "','" + fileUrl + "')</script>");  
                
                request.setAttribute("url", fileUrl);
                request.setAttribute("callback", callback);
             
           
            out.flush();  
            out.close();  
  
        } catch (IOException e) {  
            logger.error("上传文件发生异常!", e);  
        } catch (Exception e) {  
            logger.error("上传文件发生异常!", e);  
        }  
  
        return;  
    }  
所有回答列表(3)
xiaopeng121的gravatar头像
xiaopeng121  LV2 2014年9月5日

是不是  form表单属性没有写关于~multipart/form-data这个的东西

cuixf2000的gravatar头像
cuixf2000  LV4 2014年9月6日

它是有时可以有时不行,如果没写multipart/form-data的话应该一次都不行吧

abc01230123abc的gravatar头像
abc01230123abc  LV6 2015年6月22日

同问,现在也遇到这问题了,lz怎么解决的?

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友