2013-12-23 2 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, Spring-Security Commons-Ио Commons-FileUpload, 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

Запуск процесса имеет доступ на запись к моему 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 –

Смежные вопросы