我一直致力于创建一系列按钮,这些按钮在过去的几天内上传,下载和删除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>
答案 0 :(得分:0)
您告诉浏览器将其显示为内联。这意味着如果浏览器&gt;知道如何呈现文件的内容,它将会。 text / pdf / xml可以直接由浏览器(或至少通过插件)呈现。如果你想强制进行&gt;下载,那么使用附件作为你的处置,和/或强制使用mime-type&gt;像application / octet-stream,浏览器不会尝试渲染。