如何将可下载文件放入HttpServletResponse?

安德烈·诺比利

我有以下问题:我有一个HttpServlet,它创建一个文件并将其返回给必须以下载形式接收的用户

byte[] byteArray = allegato.getFile();

InputStream is = new ByteArrayInputStream(byteArray);
Base64InputStream base64InputStream = new Base64InputStream(is);

int chunk = 1024;
byte[] buffer = new byte[chunk];
int bytesRead = -1;

OutputStream out = new ByteArrayOutputStream();

while ((bytesRead = base64InputStream.read(buffer)) != -1) {
    out.write(buffer, 0, bytesRead);
}

如您所见,我有一个byteArray对象,它是一个字节数组(byte [] byteArray),并以这种方式将其转换为文件:

  1. 首先,我将其转换为InputStream对象。

  2. 然后,将InputStream对象转换为Base64InputStream

  3. 最后,我写这篇文章Base64InputStream一个上ByteArrayOutputStream对象(OutputStream中出对象)。

我认为到目前为止应该没问题(是确定还是我在文件创建中缺少了某些内容?)

现在,我的servlet必须以下载的方式返回此文件(因此,用户必须将下载内容接收到浏览器中)。

那么我该怎么做才能获得这种行为?我认为我必须将此OutputStream对象放入Servlet响应中,例如:

ServletOutputStream stream = res.getOutputStream();

但是我不知道该怎么做?我是否还要为文件设置特定的MIME类型?

斯韦特林·扎列夫(Svetlin Zarev)

这很容易做到。

byte[] byteArray = //your byte array

response.setContentType("YOUR CONTENT TYPE HERE");
response.setHeader("Content-Disposition", "filename=\"THE FILE NAME\"");
response.setContentLength(byteArray.length);
OutputStream os = response.getOutputStream();

try {
   os.write(byteArray , 0, byteArray.length);
} catch (Exception excp) {
   //handle error
} finally {
    os.close();
}

编辑:我注意到您首先从base64解码数据,您应该执行以下操作:

OutputStream os = response.getOutputStream();
byte[] buffer = new byte[chunk];
int bytesRead = -1;

while ((bytesRead = base64InputStream.read(buffer)) != -1) {
    os.write(buffer, 0, bytesRead);
}

您不需要中间 ByteArrayOutputStream

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将可下载文件添加到我的Github.io页面?

来自分类Dev

使用 dataURL 制作可下载文件

来自分类Dev

在 Google App Engine 中使用 JavaScript 将可下载文件添加到另一个页面

来自分类Dev

如何在不使用html中的下载标签的情况下创建可下载文件?

来自分类Dev

如何检查链接是否为PHP中的可下载文件?

来自分类Dev

如何在本地主机上呈现可下载文件wihich:8080

来自分类Dev

我如何链接到 CakePHP 3.6 中的可下载文件?

来自分类Dev

如何下载文件

来自分类Dev

如何下载文件?

来自分类Dev

使用django从远程服务可下载文件(巨大)

来自分类Dev

浏览器缓存可下载文件

来自分类Dev

检测链接是否为可下载文件

来自分类Dev

以编程方式查询来自sourceforge的可下载文件

来自分类Dev

我的应用程序中的可下载文件

来自分类Dev

我应该如何使文件可下载?

来自分类Dev

如何制作可下载的.xml文件?

来自分类Dev

如何将可用磁盘空间放入文件名?

来自分类Dev

如何将可用磁盘空间放入文件名?

来自分类Dev

如何从HTTPResponseMessage下载文件

来自分类Dev

如何快速下载文件?

来自分类Dev

如何从gridview下载文件?

来自分类Dev

如何让人们下载文件

来自分类Dev

如何点击下载文件

来自分类Dev

如何将家中的下载目录设置为下载文件的默认目录?

来自分类Dev

如何将可变向量放入状态Monad

来自分类Dev

android:如何将可滚动的照片放入imageView?

来自分类Dev

如何将可变向量放入状态Monad

来自分类Dev

如何将可绘制的大图像放入android的gridview中?

来自分类Dev

HTML画布会blob到IE9、10中的可下载文件

Related 相关文章

热门标签

归档