2013-12-23 32 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 –

相關問題