Файл Excel не загружается из каталога с использованием Java - PullRequest
0 голосов
/ 09 мая 2018

В моем приложении у меня есть возможность загрузить файл Excel из папки пользователем, все функции работают хорошо, но он показывает только ответ в консоли, и я не могу одновременно загрузить файл Excel в браузере не отображается опция сохранения или загрузки.

Примечание: Я использовал все возможные ContentType ("application / vnd.openxmlformats officedocument.spreadsheetml.sheet") .

 String downloadFolder = request.getRealPath(fileDetail.getFilePath()+fileDetail.getFileName());

    Path file = Paths.get(downloadFolder);
    if(Files.exists(file)){
        response.reset();
        response.setContentType("application/vnd.openxmlformats officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition", "attachment; filename=\"Demo.xlsx");

        try {
            Files.copy(file, response.getOutputStream());
            response.getOutputStream().flush();
        } catch (IOException e){
            return null;
        }
    }

Как я могу решить эту проблему? Мне нужно скачать файл Excel, когда метод вызывается. Спасибо

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Я думаю, поскольку flush () вызывается на последующем шаге.Он не работает должным образом.

Попробуйте использовать блок finally для сброса ..

0 голосов
/ 09 мая 2018

Вы можете попробовать записать файл, как показано ниже

InputStream inputStream = новый BufferedInputStream (новый FileInputStream (файл));

// Копировать байты из источника в место назначения (в этом примере outputtream), закрывает оба потока.

FileCopyUtils.copy (inputStream, response.getOutputStream ());

0 голосов
/ 09 мая 2018

Попробуйте скачать файл

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");


     response.setHeader("Content-disposition","attachment; filename=check.xlsx"); // Used to name the download file and its format

     File my_file = new File("E://outputtext.xlsx"); // We are downloading .xlsx file, in the format of doc with name check - check.xlsx


     OutputStream out = response.getOutputStream();
     FileInputStream in = new FileInputStream(my_file);
     byte[] buffer = new byte[4096];
     int length;
     while ((length = in.read(buffer)) > 0){
        out.write(buffer, 0, length);
     }
     in.close();
     out.flush();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...