2016-09-17 2 views
0

Ich bin neu zu Spring Rest und versuchen, eine REST POST API zu erstellen, wo der Benutzer eine Datei an den Server senden kann.Spring-Boot-REST-POST-API zum Senden einer Datei

@RequestMapping(value = "/order", method = RequestMethod.POST) 
public String create(@RequestParam("file") MultipartFile file) {   
     System.out.println("---------INSIDE ORDER----------"); 
     return "file succesfully received!"; 
} 

Aber ich, wenn sie durch das Hochladen einer Datei order.txt und Auswahl von Form-Daten (in Postbote) bekomme ich diesen Fehler

{ 
    "timestamp": 1474129488458, 
    "status": 400, 
    "error": "Bad Request", 
    "exception": "org.springframework.web.multipart.support.MissingServletRequestPartException", 
    "message": "Required request part 'file' is not present", 
    "path": "/order" 
} 
+0

Wie haben Sie den 'file' Parameter übergeben? Sende die Anfrage bitte. – Maroun

+0

curl -X POST http: // localhost: 8080/order \ -d json = '{"name": "john", "lastNane": "doe"}' – krs8888

+0

sollte ich stattdessen requestBody verwenden, wenn ich eine anhängen möchte Textdatei (die JSON enthält) – krs8888

Antwort

1

Problem nicht mit Ihrem Code einen Aufruf dieser API machen, ist die nimmt die Anfrage an. Es ist mit der Anfrage, wie Sie machen.

-d wird verwendet, um die Daten zu übergeben. Sie haben -F zu verwenden, wie unten

curl -X POST localhost:8080/order -F "[email protected]" 

Siehe post-Abschnitt curl manual für mehr Details

+0

danke funktioniert – krs8888

+0

cool ... Happy Coding :) –

-1

gezeigt Überprüfen Sie, ob Sie diese Elemente haben:

@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; 
} 

Und in den pplications.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.`enter code here` 
Verwandte Themen