2017-02-28 75 views
0

從BLOB列中下載文件時,文件名未正確設置用於在頭中設置的下載文件,而是採用瀏覽器標籤標題。以下是我的片段使用下載文件名未從響應頭中讀取

public static void downloadFile(ActionResponse actionResponse,ActionRequest actionRequest, String type){ 


     HttpServletResponse httpRes = PortalUtil.getHttpServletResponse(aResponse); 
     String fileName = ""; 
     InputStream in = null; 

     System.out.println("type:- "+type); 
      Connection conn = null; 
      ResultSet rs = null; 
      PreparedStatement pstmt = null; 


      try { 
       conn = ConnectionManager.getJNDIConnection(JNDI); 

       pstmt = conn.prepareStatement(DOWNLOAD_FILE); 
       pstmt.setString(1,type); 
       rs = pstmt.executeQuery(); 

       while (rs.next()) { 
        //Getting the filename from DB 
        fileName = rs.getString("FILE_NAME"); 

        httpRes.reset(); 
        if (fileName != null) {     
         String Mimetype="application/msword";      
         System.out.println("fileName:- "+fileName);       
         //Getting data from DataBase of type BLOB 
         in = rs.getBinaryStream("FILE_BLOB"); 
         ServletResponseUtil.sendFile(httpReq, httpRes, fileName, in,5242880, Mimetype,"attachment; filename ="+fileName); 
         in.close(); 
        }else 
        { 
         break; 
        } 
       } 

       System.out.println("::::::::file name:::::::::>"+fileName); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

回答

0

RFC6266Content-Disposition頭的filename參數的值必須是一個引用字符串,即:

ServletResponseUtil.sendFile(httpReq, httpRes, fileName, in, 5242880, Mimetype, "attachment; filename=\"" + fileName + "\"");