简体   繁体   中英

File Upload to Server Directory Using Spring MVC

I am trying to upload a file to the server directory from client machine. I used the following codes :

FileUpload.jsp

<form:form commandName="fileUpload" action="upload.action" method="post"  enctype="multipart/form-data">
<form:label path="fileData">Upload a File</form:label> <br />
<form:input type="file"  path="fileData" />
<input type="submit" value="upload" >
</form:form>

In my Controller:

@RequestMapping("/upload.action")
public String upload(@ModelAttribute("fileUpload") FileUpload fileUpload,HttpServletResponse response,Model model)
{
    CommonsMultipartFile multipartFile = fileUpload.getFileData();
    String orginalName = multipartFile.getOriginalFilename();
    String filePath = "/my_uploads/"+orginalName;
    File destination = new File(filePath);
    String status ="success";
    try {
        multipartFile.transferTo(destination);
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        status="failure";
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        status="iofailure";
    }
    model.addAttribute("status", status);
    return "home";
}

FileUpload.java :

{
   private CommonsMultipartFile fileData;
   ....
}

NullPointerException is thrown at the line String orginalName = multipartFile.getOriginalFilename(); .. what wrong thing i have done??

Try adding the MultipartFile as a parameter in your requesthandler.

@RequestMapping("/upload.action")
public String upload(@RequestParam(value = "file") MultipartFile file,
        HttpServletResponse response,Model model)
{
    //Controller logic...
}

This will require you to register a new bean in your dispatcher's configuration.

<bean id="multipartResolver"
   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5000000"/>
</bean>
@RequestMapping("/upload.action")
public String upload(@RequestParam("fileData") MultipartFile file,
        HttpServletResponse response,Model model)
{
    //Controller logic...
}

you should have the same name in the parameter for your request handler method ,whatever you given in the FileUpload Pojo for multipartFile ("fileData") it should be in the parameter

Thanks,

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM