So geben Sie ein Bild im Spring Boot-Controller zurück und dienen wie ein Dateisystem

9

Ich habe versucht, die verschiedenen Möglichkeiten in Stackoverflow gegeben, vielleicht habe ich etwas verpasst.

Ich habe einen Android-Client (dessen Code ich nicht ändern kann), der gerade ein Bild wie folgt bekommt:

%Vor%

Dabei ist url der Speicherort des Bildes (statische Ressource auf CDN). Jetzt muss sich mein Spring Boot-API-Endpunkt auf die gleiche Weise wie eine Dateiressource verhalten, damit derselbe Code Bilder von der API abrufen kann (Spring-Boot-Version 1.3.3).

So habe ich das:

%Vor%

Wenn der Android-Code versucht, http://someurl/image1.jpg zu erhalten, erhalte ich diesen Fehler in meinen Protokollen:

  

Behebung der Ausnahme vom Handler [public   org.springframework.http.ResponseEntity   com.myproject.MyController.getImage (java.lang.String)]:   org.springframework.web.HttpMediaTypeNotAcceptableException: Konnte nicht   finde eine akzeptable Darstellung

Derselbe Fehler tritt auf, wenn ich http://someurl/image1.jpg in einen Browser stopfe.

Seltsamerweise sind meine Tests ok:

%Vor%

Wie bekomme ich das, um sich wie ein normales Bild zu verhalten? (Hinweis: Ich kann den Inhaltstyp-Header, den der Android-Code sendet, nicht ändern)

BEARBEITEN

Code nach Kommentaren (Inhaltstyp festlegen, produces herausnehmen):

%Vor%

In einem Browser scheint das nur einen stringierten Müll zu geben (Byte zu Zeichen, denke ich). In Android ist es kein Fehler, aber das Bild wird nicht angezeigt.

    
Manish Patel 11.11.2016, 23:12
quelle

3 Antworten

8

Endlich behoben ... Ich musste meiner ByteArrayHttpMessageConverter Unterklasse% WebMvcConfigurerAdapter hinzufügen:

%Vor%     
Manish Patel 14.11.2016, 09:50
quelle
8

Ich glaube, das sollte funktionieren:

%Vor%

Beachten Sie, dass der Inhaltstyp für ResponseEntity festgelegt ist, nicht für HttpServletResponse direkt.

    
Roman 18.11.2016 22:06
quelle
5

Falls Sie den Datei / MIME-Typ nicht kennen, können Sie dies tun .... Ich habe das getan, wo ich eine hochgeladene Datei nehme und den Dateinamen durch eine GUID und keine Erweiterung und Browser / Smartphones ersetze sind in der Lage, das Bild ohne Probleme zu laden.  Die zweite besteht darin, eine Datei zum Herunterladen bereitzustellen.

%Vor%     
mavriksc 28.06.2017 22:04
quelle

Tags und Links