2014-04-16 50 views
0

寫了一個簡單的代碼,從文件系統下載文件,但仍然沒有得到下載彈出,因此文件不下載,甚至沒有任何錯誤。請幫助我。以下是我寫的代碼在控制器端。文件下載彈出不來

@RequestMapping(value = "download", method=RequestMethod.POST) 
    public @ResponseBody void download(HttpServletRequest request, HttpServletResponse response){ 
     String fileName="/home/test/Testing.xlsx"; 
     PrintWriter out=null; 

     try{ 
      System.out.println(fileName.substring(fileName.lastIndexOf('/')+1)+"fileName"); 
      response.setContentType("application/vnd.ms-excel"); 
      response.setHeader("Cache-Control", "must-revalidate"); 
      response.setHeader("Pragma", "public"); 
      response.setHeader("Content-Disposition", "attachment; filename=" + fileName.substring(fileName.lastIndexOf('/')+1)); 
      out = response.getWriter(); 
      int i; 
      FileInputStream inputStream = new FileInputStream(fileName); 
      while ((i = inputStream.read()) != -1) { 
       out.write(i); 
      } 
      inputStream.close(); 
      out.close(); 

     } 
     catch(Exception e){ 
      System.out.println(e); 
     } 


    } 

回答

0

這裏的錯誤是POST方法,我們不應該使用post方法,而應該在編寫程序下載時總是使用GET方法。

@RequestMapping(value = "download", method=RequestMethod.GET) 
     public @ResponseBody void download(HttpServletRequest request, HttpServletResponse response){ 
      String fileName="/home/test/Testing.xlsx"; 
      PrintWriter out=null; 

      try{ 
       System.out.println(fileName.substring(fileName.lastIndexOf('/')+1)+"fileName"); 
       response.setContentType("application/vnd.ms-excel"); 
       response.setHeader("Cache-Control", "must-revalidate"); 
       response.setHeader("Pragma", "public"); 
       response.setHeader("Content-Disposition", "attachment; filename=" + fileName.substring(fileName.lastIndexOf('/')+1)); 
       out = response.getWriter(); 
       int i; 
       FileInputStream inputStream = new FileInputStream(fileName); 
       while ((i = inputStream.read()) != -1) { 
        out.write(i); 
       } 
       inputStream.close(); 
       out.close(); 

      } 
      catch(Exception e){ 
       System.out.println(e); 
      } 


     } 
相關問題