java - 将多个图像设置为响应实体

标签 java http httpresponse response-headers

我想向客户端返回包含多个图像的响应。在客户端我想下载这些图像。我还没有找到像 .setEntity() 这样的 HttpServletResponse 方法。所以我决定在标题字段中添加图像。我按以下方式添加,

File sourceFile = new File(serverLocation + "/" + filename);

servletresponse.setContentType(new MimetypesFileTypeMap().getContentType(sourceFile));
servletresponse.setContentLength((int)sourceFile.length());
servletresponse.setHeader(filename, "attachment; filename=" + URLEncoder.encode(filename, "UTF-8"));

我无法在客户端下载。这就是我在客户端所做的事情,

CloseableHttpResponse response = httpclient.execute(httppost);
Header[] headers = response.getAllHeaders();
            for (int i = 0; i < headers.length; i++) {
                if (headers[i].getName().equals(filename)) {
                    imagename = headers[i].getValue();
                }
            }
InputStream fileInputStream = new ByteArrayInputStream(imagename.getBytes(StandardCharsets.UTF_8));
            byte[] bufffer = new byte[512];
            while ((bufferSize = fileInputStream.read(bufffer)) > 0) {
                fileOutputStream.write(bufffer, 0, bufferSize);
            }

但是它不写图像。我如何添加多个文件并在客户端下载它。请帮忙。

最佳答案

单个 HTTP 调用只能返回单个图像(内容)。如果您需要发送多个图像,您可以:

  1. 在响应中传递图像 URL,而不是实际资源,并让客户端解析并下载它们
  2. 如果您想隐藏正文的响应,您可以使用 header 来实现与示例中提到的相同目的(但这对我来说看起来是一个奇怪的用例)

关于java - 将多个图像设置为响应实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60264740/

相关文章:

java - Apache Camel - 简单扫描目录和ftp上传

java - 如何在java中扫描复数

java - 为什么添加spring security后主页无法访问

javascript - 从http json后angularjs更新模型 View

c# - 如何将经典 ASP 响应对象传递给 C# DLL

java - 有没有办法从 SharePoint 检索没有文件名的文件?

java - 安卓/Java : filenames of contents raw folder to array

javascript - Node.js 和 Express - 将 JSON 对象从 SoundCloud API 发送到前端使其成为字符串

http - Golang 1.7 上下文值 nil

c# - 网络核心 : how to make the browser show file as being downloaded before it's sent