Download Excel-Datei Per Servlet

Ich bin mit dem folgenden code aufgerufen per ajax-call für meine excel-Datei.Klicken Sie auf den download-button excel-Datei wird generiert an der Wurzel Lage. Aber ich bin nicht in der Lage, um die Eingabeaufforderung für den Benutzer zum speichern der Datei. Ich kann sehen, die Registerkarte "response" des Browsers, wo der Inhalt von excel kommen. Aber ich will das Dialogfeld "Speichern unter" - option zu kommen. Eine Korrektur im code unten, dass das Problem lösen kannst?

            final Date date = new Date();
            final String generateDate= new SimpleDateFormat("yyyy-MM-dd").format(date);
            final String filename = form_name+"-extraction-"+generateDate.toString()+".xls";
            final FileOutputStream fileOutputStream = new FileOutputStream(filename);
            workbook.write(fileOutputStream);
            downloadFile(filename, response);

Unten ist der download-Datei-Methode :

private void downloadFile(final String fileName, final SlingHttpServletResponse response){
        try {
            final File f = new File(fileName);
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-Disposition", "inline; filename="+fileName);
            response.setHeader("Pragma", "public");
            response.setHeader("Cache-Control", "no-store");
            response.addHeader("Cache-Control", "max-age=0");
            FileInputStream fin = null;
            try {
                fin = new FileInputStream(f);
            } catch (final FileNotFoundException e) {
                e.printStackTrace();
            }
            final int size = 1024;
            try {
                response.setContentLength(fin.available());
                final byte[] buffer = new byte[size];
                ServletOutputStream os = null;

                os = response.getOutputStream();
                int length = 0;
                while ((length = fin.read(buffer)) != -1) {
                    os.write(buffer, 0, length);
                }
                fin.close();
                os.flush();
                os.close();
            } catch (final IOException e) {
                e.printStackTrace();
            }
        }catch (final Exception ex){
            LOGGER.error("ERROR IS ::: {}",ex.getMessage());
    }
InformationsquelleAutor zdhim | 2016-06-25
Schreibe einen Kommentar