- Я пытаюсь загрузить zip-файл с фиксированного местоположения, присутствующего на сервере.
- В моем методе «Отдых» я просто передаю имя файла из клиента (браузера). (см. Ниже код).
В моем методе «Отдых» я отправляю почтовый файл клиенту.Zip-файл, загружаемый без расширения .zip в Chrome через Java
Файл загружается в браузере без каких-либо проблем.
Моя проблема в том, что zip-файл загружается в браузер без расширения .zip.
@RequestMapping(value = "/zip/{filePath}", method = RequestMethod.GET)
public @ResponseBody void downloadZip(@PathVariable("filePath") String filePath, HttpServletRequest request, HttpServletResponse response) throws IOException {
ServletContext context = request.getServletContext();
File downloadFile = new File(filePath);
FileInputStream inputStream = new FileInputStream(downloadFile);
// get output stream of the response
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[(int) downloadFile.length()];
int bytesRead = -1;
// write bytes read from the input stream into the output stream
while ((bytesRead = inputStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
// get MIME type of the file
String mimeType = context.getMimeType(fullPath);
if (mimeType == null) {
// set to binary type if MIME mapping not found
mimeType = "application/octet-stream";
}
System.out.println("MIME type: " + mimeType);
// set content attributes for the response
response.setContentType(mimeType);
response.setContentLength((int) downloadFile.length());
response.setHeader("Content-Disposition",
String.format("attachment; filename=\"%s\"", downloadFile.getName()));
logger.error("Filename = " + downloadFile.getName());
inputStream.close();
outStream.close();
}
PS: Файл загружается на какую-либо машину с ZIP и на какой-либо машине без ZIP. Я тестировал только на хром (по требованию клиента). Я думаю, что есть проблема с настройками Chrome, которые мне нужно посмотреть (просто догадка).
Может кто-нибудь помочь в этом?
Заранее спасибо ....
Измените порядок между настройкой заголовков откликов и выталкиванием файла вниз по выходному потоку - в конце концов, заголовки должны уйти первыми. –
Пробовал, но он не работает. В любом случае спасибо. – krohit
Попробуйте mime-type для «application/zip, application/octet-stream» –