Breaking Benjamin Breaking Benjamin - 1 year ago 489
reST (reStructuredText) Question

Postman : Required request part 'file' is not present

I wanted to upload an image to my Rest API through postman. I am using spring boot framework. Here is the screen shot :

enter image description here

I also have not set any any headers as I found in other stack overflow answers as it gave multipart boundary error.

Now, below is my controller code :


import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.codehaus.jackson.JsonParseException;

public class CatalogueController{

private CatalogueService catalogueService;

@RequestMapping(value = "addProduct", method = RequestMethod.POST , consumes = "multipart/form-data")
public Product addProduct(@RequestParam String productJson, @RequestParam MultipartFile file) throws JsonParseException, JsonMappingException, IOException {

Product product = new ObjectMapper().readValue(productJson, Product.class);
byte[] mediaBytes = file.getBytes();
return catalogueService.saveInDb(product);



Now, I am taking a Product object which consists internally an image defined as byte[] array. I take this as string and image separately as Multipart file.

Below is my product class attributes defined :

private Long pId;
private String model;
private String brand;
private byte[] image; // This is where I want the image to save
private Long price;
private String currency;
private String transmissionType;
private String fuelType;

Since , I am using spring boot , here is my Main class :


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

public class App {

public static void main(String[] args) {, args);


The error on postman I get is :

"timestamp": 1478611635977,
"status": 400,
"error": "Bad Request",
"exception": "",
"message": "Required request part 'file' is not present",
"path": "/CatalogueController/addProduct"

Where am I wrong ?

Answer Source

I think the problem lies in the JSON parameter you are sending. In postman you don't need to put the starting and trailing " to represent a parameter as string. And also if you use starting and ending " then inside the JSON( mean for JSON object the properties key and value) you should use '(single quote).

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download