Download image using Spring MVC and Html

I keep getting this error when I do spring mvc with my code. I am trying to upload images using spring mvc. What arguments are I missing.

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: argument type mismatch java.lang.IllegalArgumentException: argument type mismatch ... 

My dispatcher servlet

 <context:component-scan base-package="com.ImageUploadSpring.Controller" /> <!-- <bean id="simpleHandler" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" /> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/Upload.html">FileUpload</prop> </props> </property> </bean> <bean id="FileUpload" class="com.ImageUploadSpring.Controller.FileUpload"> <property name="commandName" value="ImageUpload"/> <property name="commandClass" value="com.ImageUploadSpring.Bean.UploadItem"/> <property name="formView" value="ImageUpload"/> <property name="successView" value="message"/> </bean> <bean id="FileUpload" class="com.ImageUploadSpring.Controller.FileUpload"></bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/" /> <property name="suffix" value=".html" /> </bean> 

controller class

 public class FileUpload extends SimpleFormController{ @RequestMapping(value = "/Upload.html", method = RequestMethod.POST) protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors,HttpSession session) { System.out.println("inside submit method"); try{ UploadItem item=(UploadItem)command; MultipartFile file = item.getFile(); InputStream inputStream = null; OutputStream outputStream = null; if (file.getSize() > 0) { inputStream = file.getInputStream(); outputStream = new FileOutputStream("D:/UploadedFiles/Images/" + file.getOriginalFilename()); System.out.println(file.getOriginalFilename()); int readBytes = 0; byte[] buffer = new byte[8192]; while ((readBytes = inputStream.read(buffer, 0, 8192)) != -1) { outputStream.write(buffer, 0, readBytes); } outputStream.close(); inputStream.close(); session.setAttribute("uploadFile", "D:/UploadedFiles/Images/" + file.getOriginalFilename()); } }catch (Exception e) { e.printStackTrace(); } return new ModelAndView("message"); } @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws ServletException { binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor()); } 

And my html page

 <form name="ImageUpload" action="/ImageUploadSpring/service/Upload.html" method="POST" enctype="multipart/form-data"> <div> Select images: <input type="text" id="box"/> <input type="file" id="UploadFile" name="UploadFile" onchange="CopyMe(this,'box');" accept="image/*" size="40" style="width: 91px;" multiple /> <br><br> <input type="submit" value="Upload" /><br><br> </div> </form> 
+4
source share
3 answers

When defining <input type="file"> you specified the name name="UploadFile" . If the file attribute is in your UploadItem command object (guessing from item.getFile ()). Are you sure you are displaying the file name correctly?

Please refer to this Spring Workbook tutorial MVC File Download

0
source

Try the following:

 protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,@RequestParam(value="UploadFile") MultipartFile image, BindException errors,HttpSession session) 
+1
source

this tutorial http://www.journaldev.com/2573/spring-mvc-file-upload-example-tutorial-single-and-multiple-files also works well for me. it's pretty simple. important when you use

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

don't forget to add Commons-Fileupload to your pom dependencies.

0
source

All Articles