2013-12-23 34 views
0

我想上传多个文件。基于Spring的REST基于Apache的通用文件上传不起作用

但它不工作..

我的来源。

的pom.xml

<!-- commons-io (fileupload dependency) --> 
<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>1.4</version> 
</dependency> 
<!-- fileupload --> 
<dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.2.2</version> 
</dependency> 

的web.xml

<filter> 
    <filter-name>multipartFilter</filter-name> 
    <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class> 
    <init-param> 
     <param-name>multipartResolverBeanName</param-name> 
     <param-value>filterMultipartResolver</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>multipartFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter> 
    <filter-name>httpMethodFilter</filter-name> 
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>httpMethodFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

根的context.xml

<bean id="filterMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <property name="maxUploadSize" value="100000" /> 
</bean> 

JSP文件(方法是POST或PUT。但两者不工作)

<form:form commandName="community" action="${CONTEXT }/community/${community.no}" method="${method}" enctype="multipart/form-data"> 
    <img src="" name="titleImage" id="titleImage"/> 
    <br/> 
    <input type="file" name="titleImageFile"/> 
    <br/> 
    title 
    <form:input path="title" id="title" title="title"/><form:errors path="title"/> 
    <br/> 
    <form:textarea path="content" rows="5" cols="30"/> 
    <br/> 
    <img src="" name="contentImage" id="contentImage"/> 
    <br/> 
    <input type="file" name="contentImageFile"/> 
    <br/> 
    <input type="submit" value="ok" onclick="showProgressBar()"/> 
</form:form> 

控制器

@Secured("ROLE_ADMIN") 
@RequestMapping(value = "/{no}", method=RequestMethod.POST) 
public String insert(HttpServletRequest request 
     , @Valid Community community 
     , BindingResult bindingResult 
     , SessionStatus sessionStatus 
     , ModelMap model) 
{ 
    System.out.println("IN POST>>>@@@"); 
    System.out.println("IN POST>>>@@@"); 
    System.out.println("IN POST>>>@@@"); 
    if(bindingResult.hasErrors()) 
    { 
     return showWriteForm(model); 
    } 
    Map map = new HashMap(); 
    map.put("community", community); 
    System.out.println("isMultipart?::"+ServletFileUpload.isMultipartContent(request)); 
    FileItemFactory factory = new DiskFileItemFactory(); 
    ServletFileUpload fileUpload = new ServletFileUpload(factory); 
    fileUpload.setSizeMax(-1); 

    List<FileItem> items = null; 
    try { 
     items = fileUpload.parseRequest(request); 
    } catch (FileUploadException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    System.out.println("items size :: "+items.size()); 
    communityService.insert(map); 
    return "redirect:/community/"+community.getNo(); 
} 

为什么项目大小为0?

帮助,请...

我使用RESTFUL设计,Spring MVC的,弹簧安全,共享-10,共享,文件上传,JSTL Spring表单标签,JSTL ......有什么不对?

+0

是否正在运行的进程已到任何目录的写访问由System.getProperty(“java.io.tmpdir”)返回? – Slartibartfast

+0

my java.io.tmpdir is C:\ Users \ slbi \ AppData \ Local \ Temp \ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ 和log4j debug dir :: CommonsMultipartResolver - 找到多部分文件[titleImageFile],大小为879394字节,原始文件名为[Chrysanthemum.jpg],存储在[C:\ Users \ slbi \ EEworkspace \ .metadata \ .plugins \ org.eclipse.wst.server.core \ tmp1 \ work \ Catalina \ localhost \ cinemadream \ upload__775585f1_1432352e2dc__7ffe_00000000.tmp] –

+0

正在运行的进程有写入权限my java.io.tmpdir。没问题 –

回答

0

如果您想直接使用请求,那么您必须使用MultipartHttpServletRequest。但是,我建议使用MultipartFile

public String insert(@Valid Community community, 
        @RequestParam MultipartFile titleImageFile, 
        @RequestParam MultipartFile contentImageFile 
+0

请阅读我的新问题.. http://stackoverflow.com/questions/20755823/multipart-request-not-initialized-exception –

相关问题