Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Geting HTTP Status 400 - Required MultipartFile parameter 'file' is not present in spring

I am trying to upload a file using spring. Below is my code how I am working on it but if I try to use it I am getting this response:

HTTP Status 400 - Required MultipartFile parameter 'file' is not present

I dont get what the error is.

I am using advanced rest client for testing and I am uploading file as an attachment.

My Javacode:

@RequestMapping(value = "/upload",headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file)
    {
        String name= "test.xlsx";
        if (!file.isEmpty()) {
            try {
                byte[] bytes = file.getBytes();
                BufferedOutputStream stream =
                        new BufferedOutputStream(new FileOutputStream(new File(name)));
                stream.write(bytes);
                stream.close();
                return "You successfully uploaded " + name + "!";
            } catch (Exception e) {
                return "You failed to upload " + name + " => " + e.getMessage();
            }
        } else {
            return "You failed to upload " + name + " because the file was empty.";
        }
    }
like image 743
Labeo Avatar asked Oct 07 '15 11:10

Labeo


2 Answers

Spring needs the

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

bean to handle file-uploads.

You should register this bean in your application context file.

The Content-Type should also be valid. In your case enctype="multipart/form-data"

EDIT1:

You can give the upload and memory size to the bean properties:

  <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- max upload size in bytes -->
        <property name="maxUploadSize" value="20971520" /> <!-- 20MB -->

        <!-- max size of file in memory (in bytes) -->
        <property name="maxInMemorySize" value="1048576" /> <!-- 1MB -->

    </bean>
like image 121
Patrick Avatar answered Sep 20 '22 15:09

Patrick


when you select the file in advance rest client, on the right side there is a input box, write in that input box name of the parameter, in your case name of parameter is file

Parameter name defined here in controller @RequestParam("file")

enter image description here

like image 28
Sanjay Singh Rawat Avatar answered Sep 22 '22 15:09

Sanjay Singh Rawat