Я работаю над созданием серии кнопок, которые загружают, загружают и удаляют файлы в 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();
Вот строка, которая конфигурирует кнопку в СПЯ
<button name="FileDownloadd" type="button" value="Download" onClick="location.href=FileDownload.html?FileID=${fileattach.FileID}'">Download</button> </td>
'' Content-Disposition "' Почему у вас есть пробел в заголовке содержимого? – Kenster
вы говорите браузеру, чтобы отобразить его 'inline'. Это означает, что если браузер знает, как отображать содержимое файла, он будет. text/pdf/xml может отображаться непосредственно браузером (или, по крайней мере, через плагин). Если вы хотите принудительно загрузить, используйте «вложение» в качестве своего расположения и/или принудительно введите mime-тип, например 'application/octet-stream', который браузер НЕ будет пытаться отображать. –
Я не думаю, что там были пробелы, я думаю, что это произошло, когда я наклеил его. Тестирование комментария Марка. –