zoukankan      html  css  js  c++  java
  • JSP文件下载的实现

    <%@ page import="com.jstrd.htgl.common.Htglcommon" %>
    <%@ page import="java.net.*" %>
    <% 
        
    String mineType = "text/plain";
        
        
    String subject = request.getParameter("subject");
        
    String name = new String(request.getParameter("name").getBytes("ISO8859-1"));
        
    if( subject != null )
        {
            Htglcommon bigText 
    = new Htglcommon();
            
    byte[] bts = bigText.selectText(subject,name);
            
    if( bts != null )
            {
                
    String ext = bigText.docType;
                
    if( ext != null )
                {
                    mineType 
    = "";
                    
    if"pdf".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "application/pdf";
                    }
                    
    else if"xls".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "application/vnd.ms-excel";
                    }
                    
    else if"doc".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "application/msword";
                    }
                    
    else if"gif".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "image/gif";
                    }
                    
    else if"jpg".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "image/jpeg";
                    }
                    
    else if"bmp".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "image/x-bmp";
                    }
                    
    else if"png".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "image/png";
                    }
                    
    else if"ppt".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "application/vnd.ms-powerpoint";
                    }
                    
    else if"txt".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "text/plain";
                    }
                    
    else if"zip".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "application/zip";
                    }
                    
    else if"rar".equalsIgnoreCase(ext))
                    {
                        mineType 
    = "application/zip";
                    }
                    
    if( mineType.equals("") )
                    {
                        mineType 
    = application.getMimeType("temp." + ext);
                    }
                    response.reset();
                    ServletOutputStream stream 
    = response.getOutputStream();
                    
    //response.addHeader("Content-Disposition","attachment; filename="+ URLEncoder.encode(bigText.docName,"gb2312"));
                    response.setContentType(mineType 
    + "; charset=gb2312");                
                    stream.write(bts);
                    stream.flush();
                    stream.close();
                    bts 
    = null;
                }
            }
        }
        
    %>

    package com.jstrd.htgl.common;

    import java.util.Calendar;
    import java.util.GregorianCalendar;


    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    import com.exp.dao.DBConnection;
    import com.exp.dao.DBConnectionFactory;
    import com.exp.dao.EXPSQLException;
    import com.exp.dao.dialect.Dialect;
    import com.exp.dao.dialect.OracleDialect;

    public class Htglcommon {
        
        
    public transient String docType = "";
        
    public transient String docName = "";    
        
        
    public Htglcommon() {    
        }


    /**
         * 查询数据(正文)
         * 
         * 
    @param subject
         *            数据对应主题
         * 
    @return 如果数据不存在,则返回null
         * 
    @throws EXPSQLException
         
    */

        
    public byte[] selectText(String subject,String strName) throws EXPSQLException {
            DBConnection dbConnection 
    = this.getDBConnection();
            Connection con 
    = dbConnection.getConnection();
            PreparedStatement ps 
    = null;
            ResultSet rs 
    = null;
            String strString 
    = "";
            
    try {
                Dialect dialect 
    = dbConnection.getDialect();
                
    if (dialect instanceof OracleDialect) {
                    ps 
    = con.prepareStatement("select file_body,file_name from sys_file f,flow_inst s where f.flow_inid=s.flow_inid and f.file_name=s.doc_name and f.flow_inid=? and f.file_name=?");
                    ps.setString(
    1, subject);
                    ps.setString(
    2, strName);
                    rs 
    = ps.executeQuery();
                    
    if (rs.next()) {
                        
    byte[] bts = rs.getBytes(1);
                        
    //Blob blob = rs.getBytes(1);
                        strString = rs.getString(2);
                        
    this.docName = strString;
                        
    this.docType = strString.substring(strString.lastIndexOf(".")+1);
                        
    //byte[] bts = blob.getBytes((long) 1, (int) blob.length());
                        rs.close();
                        ps.close();
                        
    return bts;
                    }

                    rs.close();
                    ps.close();
                }
     else {
                    ps 
    = con.prepareStatement("select file_body,file_name from sys_file f,flow_inst s where f.flow_inid=s.flow_inid and f.file_name=s.doc_name and f.flow_inid=? and f.file_name=?");
                    ps.setString(
    1, subject);
                    ps.setString(
    2, strName);
                    rs 
    = ps.executeQuery();
                    
    if (rs.next()) {
                        
    byte[] bts = rs.getBytes(1);
                        strString 
    = rs.getString(2);
                        
    this.docName = strString;
                        
    this.docType = strString.substring(strString.lastIndexOf(".")+1);
                        rs.close();
                        ps.close();
                        
    return bts;
                    }

                    rs.close();
                    ps.close();
                }

                
    return null;
            }
     catch (SQLException sqlE) {
                
    throw new EXPSQLException(sqlE);
            }
     finally {
                dbConnection.close();
            }

        }


        
    protected DBConnection getDBConnection() throws EXPSQLException {
            
    return DBConnectionFactory
                    .createDBConnection(
    "WorkFlow");
        }


    }
  • 相关阅读:
    autoLayout适配
    iOS FMDB 无法更新二进制数据的问题
    iOS 数据库操作崩溃提示“ int rc = sqlite3_step([_statement statement]);”或者提示“ rc = sqlite3_step(pStmt);”
    iOS点击cell时,控件背景色消失的解决方法
    UISegmentedControl 的使用
    自定义cell侧滑删除
    iOS设置cell选中时文字颜色的变化
    iOS 如何在Label中显示html的文本
    iOS 单例的销毁
    类似微信聊天界面加载历史记录的样式
  • 原文地址:https://www.cnblogs.com/ding0910/p/646338.html
Copyright © 2011-2022 走看看