流的方式下载附件

<!--
@author :daisy
@date : 2011-12-04
@note : 从数据库中读取BLOB图片显示
-->
<%@page import="com.cwai.dao.DBManager"%>
<%@ page contentType=" text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
  out.clear();
  out = pageContext.pushBody();
  //读取blob字段的图片内容,将其显示
  String xh = request.getParameter("xh");
  String wjm = request.getParameter("wjm"); 
  wjm = java.net.URLEncoder.encode(wjm, "UTF-8");
  try {
    ServletOutputStream sos = null;
    String sql = "SELECT WJNR WJNR FROM FJ_SWYB WHERE XH = '" + xh+"'";
    System.out.println(sql);
    byte[] blob_array = DBManager.getBlob(sql, null);
    try {

      //修改前
      //response.setContentType("multipart/form-data");
      //修改后
      response.setContentType("multipart/form-data");
      String kzm = wjm.substring(wjm.lastIndexOf(".")+1);
      if("PDF".equals(kzm.toUpperCase()) ){
        response.setContentType("application/pdf");
      }

      String downFileName = new String(wjm.getBytes("GB2312"),"iso8859-1");

      //注意:attachment \inline 两者的区别
      response.setHeader("Content-Disposition", "attachment;filename=\""+downFileName+"\"");
      sos = response.getOutputStream();
      System.out.println("blob_array-lenth:----" + blob_array.length);
      sos.write(blob_array);
      sos.flush();
      sos.close();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (sos != null) sos.close();
    }
    return;
  } catch (Exception ex) {
    ex.printStackTrace();
}
response.sendError(404);
%>

05-08 15:19