下载以使用Java在浏览器中打开或保存本地文件

下载以使用Java在浏览器中打开或保存本地文件,java,file,browser,download,apache-poi,Java,File,Browser,Download,Apache Poi,我想在浏览器中下载现有的本地excel文件,要求用户“打开”或“保存”该文件。我尝试了许多解决方案,但无法打开文件。 使用ApachePOI,我可以读写excel文件,但我找不到一个简单的解决方案来下载文件,提示用户打开或保存它。 我现在实际使用的代码是: 代码不起作用。没有打开或保存的请求。屏幕或日志中没有错误 有人能帮我吗 private void downloadFile(final String fileName, final SlingHttpServletResponse resp

我想在浏览器中下载现有的本地excel文件,要求用户“打开”或“保存”该文件。我尝试了许多解决方案,但无法打开文件。 使用ApachePOI,我可以读写excel文件,但我找不到一个简单的解决方案来下载文件,提示用户打开或保存它。 我现在实际使用的代码是:

代码不起作用。没有打开或保存的请求。屏幕或日志中没有错误

有人能帮我吗

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", "attachment; 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());
    }
我更改了内容配置,如下所示:

response.setHeader("Content-Disposition", "attachment; filename="+fileName);

这上面有人吗?