有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过servlet下载时java Excel文件已损坏

我有一个下载xlsx文件的servlet,但下载时文件已损坏。原始文件为12.8KB,但下载的文件为20.8KB

下面是我的代码

    public class MyServlet extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            try {
                String fileName = "MyFile.xlsx";
                URL url = getClass().getResource("/" + fileName);
                File f = new File(url.getPath());
    
                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){

        }
    }
}

知道为什么会这样吗


共 (0) 个答案