Spring org.springframework.web.multipart.support.MissingServletRequestPartException, Required request part 'file' is not present

11,513

Verify if you have this items:

@Bean
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver multipart = new CommonsMultipartResolver();
    multipart.setMaxUploadSize(3 * 1024 * 1024);
    return multipart;
}

@Bean
@Order(0)
public MultipartFilter multipartFilter() {
    MultipartFilter multipartFilter = new MultipartFilter();
    multipartFilter.setMultipartResolverBeanName("multipartResolver");
    return multipartFilter;
}

and in the applications.properties:

# MULTIPART (MultipartProperties)
spring.http.multipart.enabled=true 
# Enable support of multi-part uploads.
# spring.http.multipart.file-size-threshold=3 # Threshold after which files will be written to disk. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.
spring.http.multipart.location= /
# Intermediate location of uploaded files.
spring.http.multipart.max-file-size=10MB
# Max file size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.
spring.http.multipart.max-request-size=10MB
# Max request size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.
spring.http.multipart.resolve-lazily=false 
# Whether to resolve the multipart request lazily at the time of file or parameter access.
Share:
11,513
Sarthak Jain
Author by

Sarthak Jain

Updated on June 04, 2022

Comments

  • Sarthak Jain
    Sarthak Jain almost 2 years

    I am trying to send a file to the controller by using it in FormBodyPart, rather than directly sending the file to it. Here is the code for making a collection of files

    private void addFile(Collection<FormBodyPart> parts, File inputFile, String fileType)
            throws ClassificationException {
        if (inputFile == null) {
            throw new ClassificationException("Null input file provided");
        }
        if (!inputFile.exists()) {
            throw new ClassificationException("Input file not found: " + inputFile.getAbsolutePath());
        }
        if (fileType != null) {
    
            String charset = "UTF-8";
            parts.add(new FormBodyPart("file", new FileBody(inputFile, fileType, charset)));
    
        } else {
            parts.add(new FormBodyPart("file", new FileBody(inputFile, inputFile.getName())));
        }
    }
    

    Parts collection is an arraylist, which would contain the files.

    Here is my code for setting Http Entity

    HttpPost httppost = new HttpPost("http://localhost:9000/upload1");
                MultipartEntity reqEntity1 = new MultipartEntity();
                FormBodyPart part1;
                for (Iterator i$ = parts.iterator(); i$.hasNext(); reqEntity1.addPart(part1)) {
                    part1 = (FormBodyPart) i$.next();
                    System.out.println(part1.getHeader());
                }
    
                httppost.setEntity(reqEntity1);
                HttpResponse response = httpclient.execute(httppost);
                System.out.println(response);
    

    My method declaration of controller is

    String index(@RequestParam("file") MultipartFile uploadfile)

    I am getting an error from the server stating

    [400] {"timestamp":1474898550131,"status":400,"error":"Bad Request","exception":"org.springframework.web.multipart.support.MissingServletRequestPartException","message":"Required request part 'file' is not present","path":"/upload1"}

    My dispatcher.xml already contains bean of multipartResolver.

    I am fairly new to web services and might be doing some kind of silly mistake. Please help me out,thanks in advance