getphoto.java~32~

来自「采用web2.0技术,采用动态标签,sql语句全部存储在数据库里面.开发速度快.」· JAVA~32~ 代码 · 共 117 行

JAVA~32~
117
字号
package com.sztheater.biz.programe;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import com.sztheater.framework.util.*;
import java.lang.*;


public class GetPhoto extends HttpServlet {

    private static final String CONTENT_TYPE = "image/*";
    private int iSuccFlag = 0;
    private String strMsg = null;
    private InputStream in = null; //定义输入流
    private int len = 10 * 1024 * 1024; //定义字符数组长度

    /**Initialize global variables*/
    public void init() throws ServletException {
        System.out.println("com.sztheater.biz.programe init()");
    }
    /**Process the HTTP Get request*/
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException,
            IOException {

        //在数据库中照片的ID
        String PHOTOID = null;
        try {
            PHOTOID = request.getParameter("photoid");
        } catch (Exception e) {
            e.printStackTrace();
        }
        //连接数据库,自定义的数据库连接池管理类

        Connection conn = null;
        Statement stmt = null;
        try {
            conn = DbFunc.getConnection(false);
        } catch (Exception e) {
            iSuccFlag = -90102;
            if (conn != null) {
                DbFunc.free(conn, iSuccFlag);
            }
            conn = null;
            strMsg = "服务取数据库连接异常" + e.getMessage();
            System.out.println("strMsg" + strMsg);
        }
        //用来存储照片数据的缓冲区
        byte[] buf = null;
        //扩展名可以从数据库得到,这里直接指定为JPEG
        String photoname = "jpeg";
        try {
            //根据ID查找照片
            String searchSql =
                    "select Post from T_Content where ContentID ='1'";
            stmt = conn.createStatement();
            ResultSet RS_photo = stmt.executeQuery(searchSql);
            //将图片数据读入缓冲区
            if (RS_photo.next()) {
                in = rs.getBinaryStream("photo");
                response.reset(); //返回在流中被标记过的位置
                response.setContentType("image/jpg"); //或gif等
                // int len=in.available();//得到文件大小
                OutputStream toClient = response.getOutputStream();
                byte[] P_Buf = new byte[len];
                int i;
                while ((i = in.read(P_Buf)) != -1)
                {
                    toClient.write(P_Buf, 0, i);
                }
                System.out.println("\n\n\n  hava image \n\n\n");
                //buf = RS_photo.getBytes(1);
            } else {
               // buf = new byte[0];
            }
        } catch (Exception e) {
            if (conn != null) {
                DbFunc.free(conn, true);
            }
            conn = null;
        } finally {
            try {
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e1) {
            }
            try {
                if (stmt != null) {
                    stmt.close();
                }
            } catch (Exception e1) {
            }
        }
        in.close();
        toClient.flush(); //强制清出缓冲区
        toClient.close();

        //response.setContentType(CONTENT_TYPE);
        //告诉浏览器输出的是图片
        response.setContentType("image/" + photoname);
        //图片输出的输出流
        OutputStream out = response.getOutputStream();
        //将缓冲区的输入输出到页面
        out.write(buf);
        //输入完毕,清楚缓冲
        out.flush();
    }

    /**Clean up resources*/
    public void destroy() {
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?