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

标签 java spring spring-mvc

我有一个包含 blob 内容的表,在其中存储不同的文件类型(文本、音频、图像等)。成功检索到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();

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

有人可以帮我吗?

最佳答案

假设您知道文件的 mimeTypefilename,您可以设置内容类型和 HTTP header Content-Disposition。

只需将字节数组写入OutputStream:

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

关于java - 如何使用下载对话框将 byte[] 转换为文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989215/

相关文章:

java - Spring 中类的动态输入参数而不是 <constructor-arg>

java - 如何解析 URL 并使用 Spring MVC 'reflectively' 运行方法?

java - 无法启动 RESTful Web 服务 IntelliJ

java - 静态 HTML 页面的 Spring View 解析器

java - 使用 entityManager 从数据库中获取列表

http - 如何在没有提供 Accept header 的情况下在 Spring MVC 中设置默认内容类型?

java - 当我已经使用 onBackPressed() 来让 webview 返回时,如何在 android 应用程序中弹出警报框以退出?

java - 使用多个线程访问一个数组,但只能读取或只能写入

java - Maven:运行来自多个类的所有测试+来自另一个类的一个测试

java - 如何在多个浏览器中运行 Selenium 测试以使用 Java 进行跨浏览器测试?