如何用javalinux 读取文件到变量图片到变量里

java如何动态分段读取图片流,并转换成image对象 - ITeye问答
最近在项目升级的时候,一个老的方案是,通过flash打包上传一个附件,这个附件是一个zip,这个附件中的文件中包含图片信息,还有xml
并且分别用三个int表示他们的位置,例如100,444,989 那么图片的流从100开始到444这里结束,这一段流记录的就是所有的图片,然444到989记录的是一个xml,主要是描述图片的宽高,记录每个图片的流的起始位置。
问题:
1:如果动态的读取文件流的部分(这个流就是图片的数据流信息),如何快速读取流中从22这个位置开始一直到88888这个之间的文件流,用过是randAccessFile读取,while部分该怎么写?
2:由于保存的图片是普通的二进制保存的,只有原始的图片流数据流,根本不知道这个图片是什么格式,我如何通过这个图片的流,然后根据XML中指定的宽高,画出这个image,并且以png的格式保存?
这个里面没有直接的图片文件,所有的图片,XML都被保存到了一个文件中,然后使用zip做的压缩,有点郁闷,请大侠们给付良药啊!
怎么写的就怎么读
已解决问题
未解决问题Java实现对Mysql的图片存取操作 - 旭东的博客 - 博客园
随笔 - 179, 文章 - 0, 评论 - 187, 引用 - 0
1.MySQL中的BLOB类型
  Mysql中可以存储大文件数据,一般使用的BLOB对象。如图片,视频等等。
  BLOB是一个二进制大对象,可以容纳可变数量的数据。因为是二进制对象,所以与编码方式无关。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
  四种字段类型保存的最大长度如下:
  TINYBLOB - 255 bytes  BLOB - 65535 bytes(64KB)  MEDIUMBLOB - 16,777,215 bytes(16MB) (2^24 - 1)  LONGBLOB - 4G bytes (2^32 & 1)
2.java对MySQL图片的读取
下面是test数据库中定义的phototest表结构。
mediumblob
保存与读取图片的代码如下:
1 import java.io.*;
2 import java.sql.*;
3 public class LoadStoreBLOB {
public static void main(String[] args) {
DBConnection
DB = new DBConnection();
//负责连接MySQl数据库的类
Connection
con = null;
PreparedStatement
ps = null;
rs = null;
InputStream
in = null;
//从本地硬盘硬盘读取一张图片保存到数据库
con=DB.getConn();
in=new FileInputStream("sdf.png");
ps=con.prepareStatement("insert into test.phototest values(?,?)");
ps.setInt(1,2);
ps.setBinaryStream(2, in, in.available());
ps.executeUpdate();
in.close();
DB.closeConn(con);
//从数据库读取图片保存到本地硬盘
con=DB.getConn();
ps=con.prepareStatement("select * from test.phototest where id=?");
ps.setInt(1,2);
rs=ps.executeQuery();
rs.next();
//将光标指向第一行
in=rs.getBinaryStream("photo");
byte[] b=new byte[in.available()];
//新建保存图片数据的byte数组
in.read(b);
OutputStream out=new FileOutputStream("222.jpg");
out.write(b);
out.flush();
out.close();
DB.closeConn(con);
catch (Exception e) {
System.out.println("Error::"+e);
&3.选择合适的字段大小
  如果选择的字段类型的最大长度较小,放不下保存的数据,可能会报出MySQL数据截断异常。如:
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'photo' at row 1
Mysql 中文参考手册列类型:查看: 105025|回复: 2
java读取sqlserver image字段图片并输出
我们知道sqlserver是有image等字段用于存贮图片信息的,那么我们就需要解析并输出图片,下面介绍java读取sqlserver image字段图片并输出
public class GetPhoto {
* @param args
*/
public Connection getCon(){
try{
//连接SQLServer2000
Class.forName(&com.microsoft.jdbc.sqlserver.SQLServerDriver&).newInstance();
Connection con = DriverManager.getConnection(&jdbc:microsoft:sqlserver://10.10.21.240:1433;DatabaseName=AIO39;SelectMethod=cursor&,&oa&,&caini&);
}catch(Exception ex){
ex.printStackTrace();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
GetPhoto getPhoto = new GetPhoto();
getPhoto.readImgFromDb();
}catch(Exception ex){
ex.printStackTrace();
}
public void readImgFromDb(){
System.out.println(&Reading from database to file:&+&d:/new.jpg&);
Connection con =
try{
con = getCon();
OutputStream out = new FileOutputStream(&d:/new.jpg&);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(&select * from Hrms_Photo where EmpID = '2'&);
if(rs.next()){
System.out.println(rs.getString(&EmpID&));
int tmpi=0;
InputStream ins= rs.getBinaryStream(&EmpPhoto&);
while((tmpi=ins.read())!=-1){
out.write(tmpi);
}
ins.close();
out.flush();
out.close();
System.out.println(&Reading from database to file d:/new.jpg success&);
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
if (con!=null){
try{
con.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
con =
}
}
上一篇:下一篇:
getPhoto.readImgFromDb();
READIMGFROMDB()方法呢?
好了,已经更新好了,之前的代码丢失了这个方法现在从新更新了下&
getPhoto.readImgFromDb();
READIMGFROMDB()方法呢?
好了,已经更新好了,之前的代码丢失了这个方法现在从新更新了下4939人阅读
JavaSE/JavaEE(20)
编程语言(9)
最近公司做个项目,要求把图片存放到数据库中然后再读取出来,在做的过程中老是出现这样或那样的问题,现把代码贴出来,仅供大家参考。
package com.swh.conI
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.sql.C
import java.sql.DriverM
import java.sql.PreparedS
import java.sql.ResultS
import java.sql.SQLE
public class ConImgDemo {
&& & * @param args
&& &Connection conn=
&& &public ConImgDemo&() {
&& &&& &try {
&& &&& &&& &String url=&jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=swhImg&;
&& &&& &&& &Class.forName(&com.microsoft.jdbc.sqlserver.SQLServerDriver&);
&&&&&&&&&&& conn= DriverManager.getConnection(url,&sa&,&sa&);&&& &
&& &&& &catch(SQLException e) {
&& &&& &&& &e.printStackTrace();
&&&&&&& catch(ClassNotFoundException ce) {
&& &&& &&& &ce.printStackTrace();
&& &public void Insert() {
&& &&& &try {
&& &&& &&& &String sql=&insert into picture values(?,?)&;
&& &&& &&& &PreparedStatement ps=conn.prepareStatement(sql);
&& &&& &&& &File f =new File(&E:/Pictures/1.jpg&);
&& &&& &&& &
&&& &&& &&&
&&& &&& &&& FileInputStream input= new FileInputStream(f);
&&& &&& &&& ps.setString(1,&test&);
&&& &&& &&& ps.setBinaryStream(2, input,(int)f.length());
&&& &&& &&& ps.executeUpdate();
&&& &&& &&& ps.close();
&&& &&& &&& input.close();
&&& &&& catch(SQLException e) {
&&& &&& &&& e.printStackTrace();
&&&&&&& catch(IOException ie) {
&&& &&& &&& ie.printStackTrace();
&&& public void Read() {
&&& &&& try {
&&& &&& &&& String sql=&select picture from picture where name=?&;
&&& &&& &&& PreparedStatement ps=conn.prepareStatement(sql);
&&& &&& &&& ps.setString(1, &test&);
&&& &&& &&& ResultSet rs=ps.executeQuery();
&&& &&& &&& byte [] b=new byte[10240*8];
&&& &&& &&&
&&& &&& &&& while(rs.next()) {
&&& &&& &&& &&& InputStream in=rs.getBinaryStream(&picture&);
&&& &&& &&& &&& in.read(b);
&&& &&& &&& &&& File f=new File(&D:Pictures/3.jpg&);
&&& &&& &&& &&& FileOutputStream out=new FileOutputStream(f);
&&& &&& &&& &&& out.write(b, 0, b.length);
&&& &&& &&& &&& out.close();
&&& &&& &&& }
&&& &&& &&&
&&& &&& catch(SQLException e) {
&&& &&& &&& e.printStackTrace();
&&& &&& catch(IOException ie) {
&&& &&& &&& ie.printStackTrace();
&&& public static void main(String[] args) {
&&& &&& // TODO Auto-generated method stub
&&& &&& ConImgDemo conImgDemo=new
ConImgDemo&();
&&&&&&& conImgDemo.Insert();
&&&&&&& conImgDemo.Read();
&其实,主要是用文件输入,输出流来进行操作。&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:75395次
积分:1076
积分:1076
排名:千里之外
原创:30篇
(1)(2)(6)(4)(1)(7)(3)(1)(1)(2)(1)(1)(3)1363人阅读
本文实例讲述了Java从数据库中读取Blob对象图片并显示的方法。分享给大家供大家参考。具体实现方法如下:
第一种方法:
大致方法就是,从数据库中读出Blob的流来,写到页面中去:
Connection conn = DBManager.getConnection();
& String sql = &SELECT picture FROM teacher WHERE id=1&;
& PreparedStatement ps =
& ResultSet rs =
& InputStream is =
& OutputStream os =
&& ps = conn.prepareStatement(sql);
&& rs = ps.executeQuery();
&& if(rs.next()){
&&& is = rs.getBinaryStream(1);
&& response.setContentType(&text/html&);
&& os = response.getOutputStream();
&& byte buf[] = new byte[1024];
&& while(&& (num=is.read(buf))!=-1&& ){
&&& os.write(buf, 0, num);
& } catch (SQLException e) {
&& e.printStackTrace();
&& is.close();
&& os.close();
&& rs.close();
&& ps.close();
& } catch (SQLException e) {
&& e.printStackTrace();
在页面中:
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
& img name=&pic& src=&&%=basePath+&servlet/DownloadAsStream&%&&/&
第二种方法:
整个流程分为四步,连接oracle数据库 -& 读取blob图片字段 -& 对图片进行缩放 -&把图片展示在jsp页面上。
import java.sql.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedI
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineT
public class OracleQueryBean {
&&& private final String oracleDriverName = &oracle.jdbc.driver.OracleDriver&;
&&& private Connection myConnection =
&&& private String strTabN
&&& private String strIDN
&&& private String strImgN
&&& public OracleQueryBean(){
&&&&&&& try{
&&&&&&&&&&& Class.forName(oracleDriverName);
&&&&&&& }catch(ClassNotFoundException ex){
&&&&&&&&&&& System.out.println(&加载jdbc驱动失败,原因:& + ex.getMessage());
&&& public Connection getConnection(){
&&&&&&& try{
&&&&&&& //用户名+密码; 以下使用的Test就是Oracle里的表空间
&&&&&&& //从配置文件中读取数据库信息
&&&&&&& GetPara oGetPara = new GetPara();
&&&&&&& String strIP = oGetPara.getPara(&serverip&);
&&&&&&& String strPort = oGetPara.getPara(&port&);
&&&&&&& String strDBName = oGetPara.getPara(&dbname&);
&&&&&&& String strUser = oGetPara.getPara(&user&);
&&&&&&& String strPassword = oGetPara.getPara(&password&);
&&&&&&& this.strTabName = oGetPara.getPara(&tablename&);
&&&&&&& this.strIDName = oGetPara.getPara(&imgidname&);
&&&&&&& this.strImgName = oGetPara.getPara(&imgname&);
&&&&&&& String oracleUrlToConnect =&jdbc:oracle:thin:@&+strIP+&:&+strPort+&:&+strDBN
&&&&&&&&&&& this.myConnection = DriverManager.getConnection(oracleUrlToConnect, strUser, strPassword);
&&&&&&& }catch(Exception ex){
&&&&&&&&&&& System.out.println(&Can not get connection:& + ex.getMessage());
&&&&&&&&&&& System.out.println(&请检测配置文件中的数据库信息是否正确.& );
&&&&&&& return this.myC
2. 读取blob字段
在OracleQueryBean类中增加一个函数,来进行读取,具体代码如下:
public byte[] GetImgByteById(String strID, int w, int h){
&&& //System.out.println(&Get img data which id is & + nID);
&&& if(myConnection == null)
&&&&&&&& this.getConnection();
&&& byte[] data =
&&&&&&&&&&& Statement stmt = myConnection.createStatement();
&&&&&&&&&&& ResultSet myResultSet = stmt.executeQuery(&select & + this.strIDName + & from & + this.strTabName + & where & + this.strIDName + &=& + strID);
&&&&&&&&&&
&&&&&&&&&&& StringBuffer myStringBuffer = new StringBuffer();
&&&&&&&&&&& if (myResultSet.next()) {
&&&&&&&&&&&&&&& java.sql.Blob blob = myResultSet.getBlob(this.strImgName);
&&&&&&&&&&&&&&& InputStream inStream = blob.getBinaryStream();
&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&& long nLen = blob.length();
&&&&&&&&&&&&&&&&&&& int nSize = (int) nL
&&&&&&&&&&&&&&&&&&& //System.out.println(&img data size is :& + nSize);
&&&&&&&&&&&&&&&&&&& data = new byte[nSize];
&&&&&&&&&&&&&&&&&&& inStream.read(data);
&&&&&&&&&&&&&&&&&&& inStream.close();
&&&&&&&&&&&&&&& } catch (IOException e) {
&&&&&&&&&&&&&&&&&&& System.out.println(&获取图片数据失败,原因:& + e.getMessage());
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& data = ChangeImgSize(data, w, h);
&&&&&&&&&&& }
&&&&&&&&&&& System.out.println(myStringBuffer.toString());
&&&&&&&&&&& mit();
&&&&&&&&&&& myConnection.close();
&&&&&&& } catch (SQLException ex) {
&&&&&&&&&&& System.out.println(ex.getMessage());
3. 缩放图片
因为图片的大小可能不一致,但是在页面中输出的大小需要统一,所以需要
在OracleQueryBean类中增加一个函数,来进行缩放,具体代码如下:
private byte[] ChangeImgSize(byte[] data, int nw, int nh){
&&& byte[] newdata =
&&&&&&&& BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
&&&&&&&&&&& int w = bis.getWidth();
&&&&&&&&&&& int h = bis.getHeight();
&&&&&&&&&&& double sx = (double) nw /
&&&&&&&&&&& double sy = (double) nh /
&&&&&&&&&&& AffineTransform transform = new AffineTransform();
&&&&&&&&&&& transform.setToScale(sx, sy);
&&&&&&&&&&& AffineTransformOp ato = new AffineTransformOp(transform, null);
&&&&&&&&&&& //原始颜色
&&&&&&&&&&& BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
&&&&&&&&&&& ato.filter(bis, bid);
&&&&&&&&&&
&&&&&&&&&&& //转换成byte字节
&&&&&&&&&&& ByteArrayOutputStream baos = new ByteArrayOutputStream();
&&&&&&&&&&& ImageIO.write(bid, &jpeg&, baos);
&&&&&&&&&&& newdata = baos.toByteArray();
&&&&&&&&&&
&&& }catch(IOException e){
&&&&&&&& e.printStackTrace();
4. 展示在页面
页面使用OracleQueryBean来根据用户提供的图片id进行查询,在读取并进行缩放后,通过jsp页面进行展示,具体代码如下:
&%@ page language=&java& contentType=&text/;charset=gbk& %&
& jsp:useBean id=&OrcleQuery& scope=&page& class=&HLFtiDemo.OracleQueryBean& /&
&&& response.setContentType(&image/jpeg&);
&&& //图片在数据库中的 ID
&&& String strID = request.getParameter(&id&);
&&& //要缩略或放大图片的宽度
&&& String strWidth = request.getParameter(&w&);
&&& //要缩略或放大图片的高度
&&& String strHeight = request.getParameter(&h&);
&&& byte[] data =
&&& if(strID != null){
&&&&&&& int nWith = Integer.parseInt(strWidth);
&&&&&&& int nHeight = Integer.parseInt(strHeight);
&&&&&&& //获取图片的byte数据
&&&&&&& data = OrcleQuery.GetImgByteById(strID, nWith, nHeight);
&&&&&&& ServletOutputStream op = response.getOutputStream();&&&&&&
&&&&&& op.write(data, 0, data.length);
&&&&&& op.close();
&&&&&& op =
&&&&&&& response.flushBuffer();
&&&&&&& //清除输出流,防止释放时被捕获异常
&&&&&&& out.clear();
&&&&&&& out = pageContext.pushBody();
5. OracleQueryBean查询类的整体代码
OracleQueryBean.java文件代码如下所示:
import java.sql.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedI
import java.awt.image.AffineTransformOp;
import java.awt.geom.AffineT
public class OracleQueryBean {
&&& private final String oracleDriverName = &oracle.jdbc.driver.OracleDriver&;
&&& private Connection myConnection =
&&& private String strTabN
&&& private String strIDN
&&& private String strImgN
&&& public OracleQueryBean(){
&&&&&&& try{
&&&&&&&&&&& Class.forName(oracleDriverName);
&&&&&&& }catch(ClassNotFoundException ex){
&&&&&&&&&&& System.out.println(&加载jdbc驱动失败,原因:& + ex.getMessage());
&&& public Connection getConnection(){
&&&&&&& try{
&&&&&&& //用户名+密码; 以下使用的Test就是Oracle里的表空间
&&&&&&& //从配置文件中读取数据库信息
&&&&&&& GetPara oGetPara = new GetPara();
&&&&&&& String strIP = oGetPara.getPara(&serverip&);
&&&&&&& String strPort = oGetPara.getPara(&port&);
&&&&&&& String strDBName = oGetPara.getPara(&dbname&);
&&&&&&& String strUser = oGetPara.getPara(&user&);
&&&&&&& String strPassword = oGetPara.getPara(&password&);
&&&&&&& this.strTabName = oGetPara.getPara(&tablename&);
&&&&&&& this.strIDName = oGetPara.getPara(&imgidname&);
&&&&&&& this.strImgName = oGetPara.getPara(&imgname&);
&&&&&&& String oracleUrlToConnect =&jdbc:oracle:thin:@&+strIP+&:&+strPort+&:&+strDBN
&&&&&&&&&&& this.myConnection = DriverManager.getConnection(oracleUrlToConnect, strUser, strPassword);
&&&&&&& }catch(Exception ex){
&&&&&&&&&&& System.out.println(&Can not get connection:& + ex.getMessage());
&&&&&&&&&&& System.out.println(&请检测配置文件中的数据库信息是否正确.& );
&&&&&&& return this.myC
&&& public byte[] GetImgByteById(String strID, int w, int h){
&&& //System.out.println(&Get img data which id is & + nID);
&&& if(myConnection == null)
&&&&&&&& this.getConnection();
&&& byte[] data =
&&&&&&&&&&& Statement stmt = myConnection.createStatement();
&&&&&&&&&&& ResultSet myResultSet = stmt.executeQuery(&select & + this.strIDName + & from & + this.strTabName + & where & + this.strIDName + &=& + strID);
&&&&&&&&&&
&&&&&&&&&&& StringBuffer myStringBuffer = new StringBuffer();
&&&&&&&&&&& if (myResultSet.next()) {
&&&&&&&&&&&&&&& java.sql.Blob blob = myResultSet.getBlob(this.strImgName);
&&&&&&&&&&&&&&& InputStream inStream = blob.getBinaryStream();
&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&& long nLen = blob.length();
&&&&&&&&&&&&&&&&&&& int nSize = (int) nL
&&&&&&&&&&&&&&&&&&& //System.out.println(&img data size is :& + nSize);
&&&&&&&&&&&&&&&&&&& data = new byte[nSize];
&&&&&&&&&&&&&&&&&&& inStream.read(data);
&&&&&&&&&&&&&&&&&&& inStream.close();
&&&&&&&&&&&&&&& } catch (IOException e) {
&&&&&&&&&&&&&&&&&&& System.out.println(&获取图片数据失败,原因:& + e.getMessage());
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& data = ChangeImgSize(data, w, h);
&&&&&&&&&&& }
&&&&&&&&&&& System.out.println(myStringBuffer.toString());
&&&&&&&&&&& mit();
&&&&&&&&&&& myConnection.close();
&&&&&&& } catch (SQLException ex) {
&&&&&&&&&&& System.out.println(ex.getMessage());
&&& public byte[] GetImgByteById(String strID){
&&& //System.out.println(&Get img data which id is & + nID);
&&& if(myConnection == null)
&&&&&&&& this.getConnection();
&&& byte[] data =
&&&&&&&&&&& Statement stmt = myConnection.createStatement();
&&&&&&&&&&& ResultSet myResultSet = stmt.executeQuery(&select & + this.strIDName + & from & + this.strTabName + & where & + this.strIDName + &=& + strID);
&&&&&&&&&&
&&&&&&&&&&& StringBuffer myStringBuffer = new StringBuffer();
&&&&&&&&&&& if (myResultSet.next()) {
&&&&&&&&&&&&&&& java.sql.Blob blob = myResultSet.getBlob(this.strImgName);
&&&&&&&&&&&&&&& InputStream inStream = blob.getBinaryStream();
&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&& long nLen = blob.length();
&&&&&&&&&&&&&&&&&&& int nSize = (int) nL
&&&&&&&&&&&&&&&&&&& data = new byte[nSize];
&&&&&&&&&&&&&&&&&&& inStream.read(data);
&&&&&&&&&&&&&&&&&&& inStream.close();
&&&&&&&&&&&&&&& } catch (IOException e) {
&&&&&&&&&&&&&&&&&&& System.out.println(&获取图片数据失败,原因:& + e.getMessage());
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&& System.out.println(myStringBuffer.toString());
&&&&&&&&&&& mit();
&&&&&&&&&&& myConnection.close();
&&&&&&& } catch (SQLException ex) {
&&&&&&&&&&& System.out.println(ex.getMessage());
&&& private byte[] ChangeImgSize(byte[] data, int nw, int nh){
&&& byte[] newdata =
&&&&&&&& BufferedImage bis = ImageIO.read(new ByteArrayInputStream(data));
&&&&&&&&&&& int w = bis.getWidth();
&&&&&&&&&&& int h = bis.getHeight();
&&&&&&&&&&& double sx = (double) nw /
&&&&&&&&&&& double sy = (double) nh /
&&&&&&&&&&& AffineTransform transform = new AffineTransform();
&&&&&&&&&&& transform.setToScale(sx, sy);
&&&&&&&&&&& AffineTransformOp ato = new AffineTransformOp(transform, null);
&&&&&&&&&&& //原始颜色
&&&&&&&&&&& BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
&&&&&&&&&&& ato.filter(bis, bid);&&&&&&&&&
&&&&&&&&&&& //转换成byte字节
&&&&&&&&&&& ByteArrayOutputStream baos = new ByteArrayOutputStream();
&&&&&&&&&&& ImageIO.write(bid, &jpeg&, baos);
&&&&&&&&&&& newdata = baos.toByteArray();
&&& }catch(IOException e){
&&&&&&&& e.printStackTrace();
下面是我的存储读取blob图片的案例
import java.sql.*;&&&
import java.io.*;&&
public class InsertPhoto {&
&&& public static void main(String[] args) throws Exception{&
&&&&&&&&&&& Class.forName(&com.mysql.jdbc.Driver&);&&&
&&&&&&&&&& Connection con = DriverManager.getConnection(&jdbc:mysql://127.0.0.1/wiseweb?user=root&password=root&);&&&
&&&&&&&&&& File f = new File(&e:/123.jpg&);&&&
&&&&&&&&&& FileInputStream fis = new FileInputStream(f);&&&
&&&&&&&&&& String sql = &insert into photo(photo,photoName) values(?,?)&;&&&
&&&&&&&&&& PreparedStatement pstmt = con.prepareStatement(sql);&&&
&&&&&&&&&& pstmt.setBinaryStream(1,fis,(int)f.length());&&&
&&&&&&&&&& pstmt.setString(2, &测试图片&);&
&&&&&&&&&& pstmt.executeUpdate();&&&
&&&&&&&&&& fis.close();&&&
&&&&&&&&&& pstmt.close();&&&
&&&&&&&&&& con.close();&&
import java.awt.image.BufferedI&
import java.io.BufferedInputS&
import java.io.IOE&
import java.io.InputS&
import java.io.OutputS&
import java.sql.C&
import java.sql.DriverM&
import java.sql.ResultS&
import java.sql.SQLE&
import java.sql.S&
import javax.imageio.ImageIO;&
import javax.servlet.http.HttpS&
import javax.servlet.http.HttpServletR&
import javax.servlet.http.HttpServletR&
import com.sun.image.codec.jpeg.JPEGC&
import com.sun.image.codec.jpeg.JPEGImageE&
public class ReadPhoto extends HttpServlet{&
&&& private static final long serialVersionUID = 1L;&
&&& public void doGet(HttpServletRequest request, HttpServletResponse response){&
&&&&&&& if(request.getParameter(&id&) != null){&
&&&&&&&&&&& response.setContentType(&image/jpeg&);&
&&&&&&&&&&& try {&
&&&&&&&&&&&&&&& InputStream is = query_getPhotoImageBlob(Integer.parseInt(request.getParameter(&id&))) ;&
&&&&&&&&&&&&&&& if(is != null){&
&&&&&&&&&&&&&&&&&&& is = new BufferedInputStream(is) ;&
&&&&&&&&&&&&&&&&&&& BufferedImage bi = ImageIO.read(is) ;&
&&&&&&&&&&&&&&&&&&& OutputStream os = response.getOutputStream() ;&
&&&&&&&&&&&&&&&&&&& JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os) ;&
&&&&&&&&&&&&&&&&&&& encoder.encode(bi);&
&&&&&&&&&&&&&&&&&&& os.close();&&&
&&&&&&&&&&&&&&&&&&& is.close();&&&
&&&&&&&&&&&&&&& }&
&&&&&&&&&&& } catch(IOException e){&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& }catch (NumberFormatException e) {&
&&&&&&&&&&&&&&& // TODO Auto-generated catch block&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& } catch (ClassNotFoundException e) {&
&&&&&&&&&&&&&&& // TODO Auto-generated catch block&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& } catch (SQLException e) {&
&&&&&&&&&&&&&&& // TODO Auto-generated catch block&
&&&&&&&&&&&&&&& e.printStackTrace();&
&&&&&&&&&&& }&
&&&&&&& }&
&&& public static InputStream query_getPhotoImageBlob(int id) throws ClassNotFoundException, SQLException{&&&
&&&&&&&&&& String sql = &select photo from photo where id=&+&&&
&&&&&&&&&& Connection con =&&&
&&&&&&&&&& Statement stmt =&&&
&&&&&&&&&& ResultSet rs =&&&
&&&&&&&&&& InputStream result =&&&
&&&&&&&&&& try {&&&
&&&&&&&&&&& Class.forName(&com.mysql.jdbc.Driver&);&&&
&&&&&&&&&&& con = DriverManager.getConnection(&jdbc:mysql://127.0.0.1/wiseweb?user=root&password=root&);&&&&
&&&&&&&&&&& stmt = con.createStatement();&&&
&&&&&&&&&&& rs = stmt.executeQuery(sql);&&&
&&&&&&&&&&& if (rs.next())&&&
&&&&&&&&&&& result = rs.getBlob(&photo&).getBinaryStream();&&&
&&&&&&&&&& } catch (SQLException e) {&&&
&&&&&&&&&&& // TODO: handle exception&&&
&&&&&&&&&&& System.err.println(e.getMessage());&&&
&&&&&&&&&& }finally{&&&
&&&&&&&&&&&&&& rs.close();&&&
&&&&&&&&&&&&&& stmt.close();&&&
&&&&&&&&&&&&&& con.close();&&
&&&&&&&&&& }&&&
&&&&&&&&&&&&&
&&&&&&& }&&
&img style=&width:320height:240px& src=&&%=basePath%&/genImage?id=3&/&
web.xml中配置
&servlet&&
&&& &servlet-name&genImage&/servlet-name&&
&&& &servlet-class&ReadPhoto&/servlet-class&&
& /servlet&&
& servlet-mapping&&
&&& &servlet-name&genImage&/servlet-name&&
&&& &url-pattern&/genImage&/url-pattern&&
& /servlet-mapping&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19645次
排名:千里之外
原创:33篇
转载:27篇
(5)(1)(1)(2)(4)(1)(5)(6)(1)(5)(3)(4)(1)(4)(7)(7)(4)

我要回帖

更多关于 java读取系统环境变量 的文章

 

随机推荐