2017-06-29 1 views
0

Ich habe ein Projekt zum Erstellen von Webdiensten, die Bilder als eine Antwort mit Spring akzeptieren und bearbeiten.Was ist die bevorzugte Methode für die Verarbeitung von Image-Dateien für Spring Framework?

Ich kenne das Konzept der RESTful APIs für Spring speziell für XML und JSON Antworten, die Bindungen mit den Java-Objekten mit der Jackson-Bibliothek, aber ich suchte nach der gleichen Art, aber für andere Inhaltstypen wie Bilder.

Ich habe die folgende Funktionalität zum Hochladen und Abrufen des Bildes, aber ich bin mir nicht sicher, was @RequestBody Objekt benötigt, um Bild POJOs wie BufferedImage zu binden, so dass ich es in Zukunft manipulieren könnte.

// Upload the image from a browser through AJAX with URI "../upload" 
@RequestMapping(value="/upload", method=RequestMethod.POST, consumes={"image/png", "image/jpeg"}) 
protected void upload(@RequestBody ???){ 
    // upload the image in a webserver as an Image POJO to make some image manipulation in the future. 
} 

// Fetches the image from a webserver through GET request with URI "../fetch/{image}" 
@RequestMapping(value="/fetch/{image}", method=RequestMethod.GET) 
protected @ResponseBody String fetch(@PathVariable("image") String imageName){ 
    // fetch image from a webserver as a String with the path of the image location to be display by img html tag. 
} 

Damit ich war auf der Suche nach einer bevorzugten Art und Weise der Bilddatei mit einer prägnanten Erklärung für den Frühling Handhabung zu tun.

Ich habe auch über BufferedImageHttpMessageConverter gelesen, aber nicht ganz sicher, ob es für meine Anwendung nützlich ist.

Vielen Dank!

Bitte lassen Sie mich Ihre Gedanken wissen.

Antwort

1

Alles, was Sie zum Hochladen benötigen, ist die übliche Upload-Datei.

@PostMapping("/upload") // //new annotation since 4.3 
public String singleFileUpload(@RequestParam("file") MultipartFile file, 
           RedirectAttributes redirectAttributes) { 

Der Code von the example

Bytes So senden Sie einfach die Datei durch POST mit "multipart/form-data"

Für Sie Download sollte nur die Bilddatei schreiben

@GetMapping(value = "/image") 
public @ResponseBody byte[] getImage() throws IOException { 
    InputStream in = getClass() 
     .getResourceAsStream("/com/baeldung/produceimage/image.jpg"); 
    return IOUtils.toByteArray(in); 
} 

Der Code von the example

+1

Kann ich @RequestMapping (Wert verwenden e = "/ upload", Methode = RequestMethod.POST) anstelle von @PostMapping richtig? – bpunzalan

+0

Ich denke ja, aber Sie können es versuchen. Ich weiß nichts über Ihre Konfigurationen, Spring-Version usw. Es ist viel einfacher/schneller zu versuchen. – StanislavL

+0

ok. Danke :) Ich werde versuchen, das zu überprüfen – bpunzalan

Verwandte Themen