- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 spring 3.2.7 应用程序,它通过输出字节数组 ResponseEntity 的 spring Controller 将存储在数据库中的签名作为 base64 字符串发送回用户浏览器。
图像总是损坏,我没有在系统的这部分工作,因为我在 svn 中进行了双重检查,并且自从我正在处理的分支创建以来, Controller 没有被触及。
我能够将 base64 字符串转换为桌面上的图像,并且我还能够在 spring 介入之前将返回到浏览器的字节数组转换为图像。
下面是我的代码,这显然之前工作过,所以也许有一些配置更改可能导致这种情况?
@RequestMapping(value = "/submissions/signature/{type}/{id}", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<byte[]> getSignature(@PathVariable String type, @PathVariable Integer id) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String base64 = ... gets from db
byte[] bytes = Base64.decodeBase64(base64);
BufferedImage bi = ImageIO.read(new ByteArrayInputStream(bytes));
ImageIO.write(bi, "png", baos);
HttpHeaders headers = new HttpHeaders();
headers.setLastModified(Calendar.getInstance().getTime().getTime());
headers.setCacheControl("no-cache");
headers.setContentType(MediaType.IMAGE_PNG);
headers.setContentLength(baos.toByteArray().length);
//Image as base64 string is ok in converter
System.out.println("BASE 64 IMAGE IS: " + base64);
//This image is created ok on desktop
FileOutputStream fos = new FileOutputStream("C:\\Users\\p\\Desktop\\test_signature.png");
fos.write(bytes);
fos.close();
//This image is created ok on desktop
FileOutputStream fos3 = new FileOutputStream("C:\\Users\\p\\Desktop\\test_signature_baos.png");
fos3.write(bytes);
fos3.close();
return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.OK);
}
图像正在浏览器中呈现,例如:
<img id="userSignature" width="296" height="110" style="border:0px" src="/webapp/service/submissions/signature/user/${subid}" alt="User signature" />
我没有更改这个类,我被告知它确实有效,我能够从两个字节数组创建图像,它们都可以并且看起来相同,并且我能够渲染签名字符串以进行测试,例如:
<IMG SRC="data:image/png;base64, <base_64_string>" ALT="">
有没有人遇到过类似的问题或知道是什么原因造成的?
我现在尝试从已创建为 png 的文件系统发送图像,但也失败了。
我现在注意到 CSV 文件无法在应用中正确下载,并且它们以相同的方式流式传输:
@RequestMapping(value = "/results/csv", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<byte[]> getResultsInCsvFormat() throws IOException {
最佳答案
我已经在 InputStream
的帮助下成功返回了文件内容:
@RequestMapping(value = "/submissions/signature/{type}/{id}",
method = RequestMethod.GET)
public HttpEntity getFile(HttpServletResponse response,
@PathVariable String type,
@PathVariable Integer id) {
String base64 = "foo"; // get base-64 encoded string from db
byte[] bytes = Base64.decodeBase64(base64);
try (InputStream inputStream = new ByteArrayInputStream(bytes)) {
StreamUtils.copy(inputStream, response.getOutputStream());
response.setContentType(MediaType.IMAGE_PNG_VALUE);
} catch (IOException e) {
// handle
}
return new ResponseEntity(HttpStatus.OK);
}
请注意,我没有使用 ResponseBody
,在我的工作版本中,我使用的是 MediaType.APPLICATION_OCTET_STREAM_VALUE
而不是实际的文件内容类型。
关于Spring将图像返回为 ResponseEntity<byte[]> - 图像损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31313303/
现在我需要我的 Controller 根据业务逻辑返回 2 种不同类型的对象,所以我的问题是我应该使用 ResponseEntity 或者我应该使用: ResponseEntity 这种返回类型有
我知道原始类型在代码中很糟糕,而且 List和 List ,例如,是不同的东西。但是 ResponseEntity 的情况呢?和 ResponseEntity ?在 @RestController 中
在 Spring Webflux 中, ResponseEntity 与 Mono 作为休息 Controller 的返回类型有什么区别? 什么时候最合适? 跟进这个问题,假设我需要返回一个列表,或者
我正在重构一些代码,这是下面示例的更大范围。 “主”类中充满了这些 try/catch block ,并且模糊了代码正在执行的操作。 我没有使用 Spring,而是使用 JaxRs 来处理异常。这将是
我正在尝试模拟 Controller 的 post 方法。我希望它返回状态代码 201(CREATED) 。但它给出了状态代码 200。下面给出的是代码这是我的 Controller 类 packag
我经常在代码中使用的结构如下: @RestController public class HelloController { @Autowired private HelloService h
请找到下面提到的代码:我需要帮助为 ResponseEntity 编写 Mockito 条件: if(isObjectPresent(ePartnerRestRequestDTO)) {
这个问题已经有答案了: Why do I get the error "File cannot be resolved to a type"? (5 个回答) 已关闭 3 年前。 我尝试在我的其余端点
我有下面的函数,我试图用我的对象列表返回 ResponseEntity。我不知道我错过了什么。 @RequestMapping(method = RequestMethod.GET, path
我对 Spring 有点陌生。我做了以下方法: public ResponseEntity updateBorder(@Valid @RequestBody Borders borders) thro
我需要模拟一项服务。我在ResponseEntity中得到空值一边 mock 全类同学一边回答。 需要模拟的方法: public List getExpression(String expressVi
我想在浏览器中显示 Controller (使用 Spring)返回的 ResponseEntity 的主体: return new ResponseEntity<>(l.getReachableDa
我正在返回一个用于文件下载的 ResponseEntity。 @RequestMapping("/download") public ResponseEntity download(){ by
这个问题引用了问题: Setting the response content-type without using HttpServletResponse 使用以下代码: @RequestMappi
我正在开发一个 spring 3.2.7 应用程序,它通过输出字节数组 ResponseEntity 的 spring Controller 将存储在数据库中的签名作为 base64 字符串发送回用户
我对 Spring 框架还很陌生,我正在尝试通过开发示例项目来学习 也许这是一个愚蠢的问题,但我根本找不到任何帮助。 当验证规则未通过时,我的 Controller 正在使用转义字符串而不是对象的 j
如果使用@Cacheable 作为返回值'ResponseEntity',我会遇到序列化错误。 Caused by: org.springframework.data.redis.serializer
我使用 ResponseEntity 为 GET“api/v1/name”和 POST“api/v1/name”请求返回响应。 我的目标是不返回空值的响应,例如在 POST "api/v1/name"
我创建了一个通用异常 DTO,它也扩展了 RuntimeException。通过这种方式,可以在应用程序中使用它,也可以将其用作 DTO。问题是当我将 DTO 应用于 ResponseEntity 构
public void etisLogAround(ProceedingJoinPoint joinPoint, EtisLog etisLog) throws Throwable {
我是一名优秀的程序员,十分优秀!