java - Spring OutputStream - 使用 IE 下载 pptx

标签 java spring-mvc stream java-8

我使用此 Java 代码从 Web 应用程序下载文件:

 @RequestMapping(value = "/filedownloads/filedownload/{userid}/{projectid}/{documentfileid}/{version}/", method = RequestMethod.GET)
 public void filesDownload(final @PathVariable("userid") String userId, final @PathVariable("projectid") String projectId,
        final @PathVariable("documentfileid") String documentFileId, final @PathVariable("version") String version,
        final HttpServletResponse response) throws IOException, BusinessException {

    ...

    final String fileName = "filename=" + documentFile.getFileName();
    final InputStream is = new FileInputStream(filePath);
    response.setHeader("Content-Disposition", "inline; " + fileName);
    IOUtils.copy(is, response.getOutputStream());
    response.flushBuffer();
}

如果我要下载 pptx- 文件,我会得到以下 IE- 页面:

opend pptx in IE

我想做的是在 Powerpoint 中打开下载的文件。 我现在的问题是,是否有标题设置以便使用正确的应用程序(在本例中为 Powerpoint)打开此文件

最佳答案

只需尝试正确设置 Content Type header 即 application/vnd.openxmlformats-officedocument.presentationml.presentation 以防 pptx ,如下所示:

response.setContentType(
    "application/vnd.openxmlformats-officedocument.presentationml.presentation"
);
response.setHeader(
    "Content-Disposition", 
    String.format("inline; filename=\"%s\"", documentFile.getFileName())
);
response.setContentLength((int) new File(filePath).length());

Here is the list of mime types corresponding to Office 2007 documents.

关于java - Spring OutputStream - 使用 IE 下载 pptx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828967/

相关文章:

java - 带绝对目录的 Runtime.exec()

java - Android 应用程序正确读取字符串列,但不能正确读取第三个整数(sqlite)

java - 如何在用户指定的时间后在 Android 中发送短信?

spring-mvc - 具有容器元素约束的Kotlin数据类和bean验证

http - 从 WebResponse 响应流读取响应

java - 将 Iterable<Character> 转换为 String 的最佳方法?

java - 找不到 [javax.sql.DataSource] 类型的合格 bean

java - 如何从org.springframework.orm.hibernate4.LocalSessionFactoryBean获取Hibernate SessionFactory?

go - 如果我的类型作为流没有意义,是否应该实现io.Reader/io.Writer?

file - 将标准输出流写入文件