文件下载到浏览器

时间:2015-04-08 16:36:06

标签: java jsp spring-mvc download

我一直致力于创建一系列按钮,这些按钮在过去的几天内上传,下载和删除Spring MVC中的文件,JSP页面和Java。我上传和删除工作完美,只是让下载几乎工作。我强调几乎是因为下载的条件很奇怪。

如果我上传说exe或jar文件,然后返回并尝试下载它。将出现一个框,询问我是否要打开它或保存它。如果我想做任何事情没有损坏或任何事情,那就没关系。

但是,如果文件是基于文本的,如PDF,TXT,.doc,甚至是XML,则会打开一个浏览器选项卡,它将显示在那里。

所以有人能指出我如何解决这个问题吗?

第一个代码块是我的控制器方法,第二个是我的jsp中触发按钮的行。

@RequestMapping("/FileDownload")
public ModelAndView FileDownload(
        @RequestParam(value = "FileID", required = false) int fileID,
        @RequestParam(value = "theFile", required = false) MultipartFile thefile,
        @ModelAttribute("fileAttachment") @Valid fileAttachment, BindingResult result, HttpServletResponse response){
        ModelAndView mav = new ModelAndView();

        fileAttachment doc = attachmentService.getFileAttachment(fileID);
        try {
        response.setHeader("Content-   Disposition", "inline;filename=\""
                    + doc.getFileName() + "\"");
        OutputStream out = response.getOutputStream();
        response.setContentType(doc.getFileType());
        FileCopyUtils.copy(doc.getFileContent(), response.getOutputStream());
        out.flush();
        out.close();

        } catch (IOException e) {
        e.printStackTrace();

这是配置jsp

中按钮的行
         <button name="FileDownloadd" type="button" value="Download" onClick="location.href=FileDownload.html?FileID=${fileattach.FileID}'">Download</button> </td>

1 个答案:

答案 0 :(得分:0)

马克的上述评论就是答案。既然是评论,我想关闭这个。我会在引号中发布。

  

您告诉浏览器将其显示为内联。这意味着如果浏览器&gt;知道如何呈现文件的内容,它将会。 text / pdf / xml可以直接由浏览器(或至少通过插件)呈现。如果你想强制进行&gt;下载,那么使用附件作为你的处置,和/或强制使用mime-type&gt;像application / octet-stream,浏览器不会尝试渲染。