Image Upload Using Spring MVC and Html
11,792
Solution 1
While defining <input type="file">
you have specified the name name="UploadFile"
. Whereas in your UploadItem command object the file attribute is file
(guessing from item.getFile()). Are you sure you are correctly mapping the filename?
Please refer to this tutorial for working tutorial on Spring MVC File Upload
Solution 2
Try this:
protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,@RequestParam(value="UploadFile") MultipartFile image, BindException errors,HttpSession session)
Related videos on Youtube
Author by
ragemusker
Updated on August 24, 2022Comments
-
ragemusker over 1 year
I keep getting this error when i do with my spring mvc code i am trying to do image upload using spring mvc what is the arguments I am 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 is
<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 is
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 is
<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>
-
ragemusker over 11 yearsi tried changing the name in the UplodItem Command Object ,but still the problem persists ,is there anything else i need to look to