【发布时间】:2016-02-29 13:16:38
【问题描述】:
我正在尝试返回这样的图像。
@RequestMapping(value = "admin/image/{userId}")
public ResponseEntity<byte[]> getPhoto(@PathVariable int userId) throws IOException {
UserDB userDB = UserDBService.getUserWithId(userId);
if (userDB != null) {
try {
byte[] image;
try {
String path = ApplicationPropertiesConstants.SAFESITE_DOCUMENTS_DIRECTORY + userDB.getSite().getId() + "\\342.png";
InputStream is = new FileInputStream(path);
BufferedImage img = ImageIO.read(is);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(img, "png", bos);
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_PNG);
return new ResponseEntity<byte[]>(IOUtils.toByteArray(is), headers, HttpStatus.CREATED);
} catch (FileNotFoundException e) {
image = org.apache.commons.io.FileUtils.readFileToByteArray(new File("dfd"));
}
return null;
} catch (IOException ignored) {
}
}
return null;
}
虽然当我访问 url 时图像不显示。
知道为什么会这样吗?我需要使用 Apache Tiles 吗?目前我正在使用 jstlView。
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
【问题讨论】:
-
你得到什么回应?
-
响应数据加载失败
-
如果你有一个
InputStream,你可以返回一个ResponseEntity<Resource>,正文是new InputStreamResource(inputStream)。 -
如果你使用
byte[]你应该设置内容长度标题。正确的状态是HttpStatus.OKbtw。 -
我不知道你所说的 body 是 new InputStreamResource(inputStream) 是什么意思
标签: spring spring-mvc