繁体   English   中英

如何使用下载对话框将byte []转换为文件?

[英]How to convert a byte[] into a file with a download dialog box?

我有一个包含blob内容的表,其中我存储了不同的文件类型(text, audio, image, etc) 成功检索byte [] ,我不知道如何转换[]以将其转换为下载对话框。
这是我的代码

trns = session.beginTransaction();
Query query = session.createQuery("from FileDownload as fu where fu.Id =:Id");
query.setInteger("Id", id);
FileDownload fileDownload = (FileDownload) query.iterate().next();
byte[] byteArray = fileDownload.getFile();

上面的代码工作正常,我收到一个byte [] 但我不知道如何进一步将其转换为出现对话框的文件。

谁能帮帮我吗?

假设您知道filenamemimeTypefilename ,则可以设置内容类型和HTTP标头Content-Disposition。

只需将字节数组写入OutputStream

    // The response from your servlet.
    HttpServletResponse resp;
    resp.setContentType(mimeType);
    resp.setHeader("Content-Disposition", "attachment;filename=" + filename);
    resp.getOutputStream().write(byteArray);

字节数组可以从servlet发送到客户端。 您可以在此处和其他地方找到关于该主题的许多讨论。

以下是讨论流媒体效率的人(使用代码)。 下面讨论如何将servlet映射到url (带示例)。

您要做的最后一件事就是在用户单击按钮时将用户链接到servlet的URL。

您还需要在流式传输字节数组之前查看标题中可以提供的其他信息。 例如,如果您提供mime类型,则浏览器会知道如何处理该文件; 在浏览器中打开PDF,在浏览器中显示图像; 在Excel中打开xls文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM