【问题标题】:How to return application/octet-stream in REST Spring?如何在 REST Spring 中返回应用程序/八位字节流?
【发布时间】:2015-01-27 01:44:20
【问题描述】:

RestController 中的InputStream 返回application/octet-stream 的最佳方式是什么? 我是否必须以“标准”Java 方式将其写入HttpResponse,或者 Spring 是否为此提供了某种机制?

【问题讨论】:

  • 是的 spring 提供相同的机制..您需要在 servlet 输出流中写入输入流

标签: spring rest mime-types


【解决方案1】:

你可以将你的输入流写入spring fileInputStream

请参考这个例子:

    File file = new File("File path");
    httpServletResponse.setHeader("Expires", "0");
    httpServletResponse.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
    httpServletResponse.setHeader("Pragma", "public");
    httpServletResponse.setHeader("Content-Type", "get content type from file");
    httpServletResponse.setHeader("Content-Length", String.valueOf(file.length()));
    try {
        FileInputStream fileInputStream = new FileInputStream(file);
        FileCopyUtils.copy(fileInputStream, httpServletResponse.getOutputStream());
        fileInputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

【讨论】:

  • 但这只会在整个文件被读取后才发送http响应,对吧?
  • 你想用八进制流精确显示的内容
  • 我应该用它来发送文件内容(尽管我不能说我 100% 相信它是最好的解决方案)。
  • @LeNoob 在执行此操作之前,我在发送文件内容方面做了很多研发。这是我得到的最佳解决方案。
  • 但是尝试使用它发送一个 3GB 的文件。文件内容需要 3 GB 缓冲区对吗?
猜你喜欢
  • 2013-02-07
  • 2019-11-03
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2019-05-13
相关资源
最近更新 更多