`

以二进制流的方式存取图像

阅读更多
imageinfo.sql
  CREATE   TABLE   [dbo].[emp]   (   
  [name]   [varchar]   (
50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,   
  [pay]   [money]   NULL   ,   
  [img]   [image]   NULL     
  )   ON   [PRIMARY]   TEXTIMAGE_ON   [PRIMARY]  
test.html
  <HTML>     
  
<HEAD>     
  
<TITLE>Image   File   </TITLE>     
  
<meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">     
  
</HEAD>
  
<h1>图片上传</h1>     
  
<FORM   METHOD=POST   ACTION="testimage.jsp">     
  
<INPUT   TYPE="text"   NAME="content"><BR>     
  
<INPUT   TYPE="file"   NAME="image"><BR>     
  
<INPUT   TYPE="submit"></FORM>     
  
<BODY>     
  
</BODY>     
  
</HTML>
testimage.jsp
  <%@   page   contentType="text/html;charset=gb2312"%>     
  
<%@   page   import="java.sql.*"   %>     
  
<%@   page   import="java.util.*"%>     
  
<%@   page   import="java.text.*"%>     
  
<%@   page   import="java.io.*"%>     
  
<html>     
  
<body>     
  
<%   
  Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver");   
  String   url   
=   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=imageinfo";   
  Connection   conn   
=   DriverManager.getConnection(url,"sa","sa");   
  System.out.println(
"diver   is   ok");   
    
  String   content
=request.getParameter("content");     
  String   filename
=request.getParameter("image");     
  FileInputStream   img
=new   FileInputStream(filename);     
  String   sql
="insert   into   emp(name,pay,img)   values('lyd',12,?)";     
  PreparedStatement   pstmt
=conn.prepareStatement(sql);     
  pstmt.setBinaryStream(
1,img,img.available());     
  pstmt.execute();     
  out.println(
"Success,You   Have   Insert   an   Image   Successfully");
  pstmt.close();
  conn.close();
  img.close();     
  
%>   
show.jsp
 <%@   page   contentType="text/html;charset=gb2312"%>     
  
<%@   page   import="java.sql.*"   %>     
  
<%@   page   import="java.util.*"%>     
  
<%@   page   import="java.text.*"%>     
  
<%@   page   import="java.io.*"%>     
  
<html>     
  
<body>     
  
<%   
  Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver");   
  String   url   
=   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=imageinfo";   
  Connection   conn   
=   DriverManager.getConnection(url,"sa","sa");   
  System.out.println(
"diver   is   ok");   
  String   sql   
=   "select   img   from   emp   ";     
  Statement   stmt
=null;     
  ResultSet   rs
=null;     
  
try{     
  stmt
=conn.createStatement();     
  rs
=stmt.executeQuery(sql);     
  }
catch(SQLException   e)   
  {   
  out.println(
"db   connection   error!");   
  }     
  
try{     
      
while(rs.next()){   
          
//rs.setContentType("image/jpeg");     
          ServletOutputStream   sout   =   response.getOutputStream();     
          InputStream   in   
=   rs.getBinaryStream("img");     
          
byte   b[]   =   new   byte[0x7a120];     
              
for(int   i   =   in.read(b);   i   !=   -1;)     
              {     
                  sout.write(b);     
                  in.read(b);     
              }     
          sout.flush();     
          sout.close();  
          in.close();   
     }     
  }     
  
catch(Exception   e){System.out.println(e);}
  
finally{
      rs.close();
      stmt.close();
      conn.close();
      
  }     
  
%>     
  
</body>     
  
</html>

以下方法为输出到磁盘上:
package org.hank.test;

import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ImageTest {

    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) {
          String   driver   
=   "com.microsoft.jdbc.sqlserver.SQLServerDriver";   
          String   url   
=   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=imageinfo";   
          String   user   
=   "sa";   
          String   password   
=   "sa";   
            
          InputStream   in   
=   null;   
          
try     
          {   
              FileOutputStream   fos
=new   FileOutputStream("c:\\123.jpg");   
              Class.forName(driver);   
              Connection   conn   
=   DriverManager.getConnection(url,   user,   password);   
              Statement   stmt   
=   conn.createStatement();   
              String   sql   
=   "select   img   from   emp";   
              ResultSet   rs   
=   stmt.executeQuery(sql); 
              System.out.println(rs.toString());
              
if   (rs.next())   
              {   
              in   
=   rs.getBinaryStream("img");  
              
int   len;   
              
byte[]   buf   =   new   byte[1024];   
                    
while   ( ( len   =   in.read(buf,   0,   1024) )   !=   -1 )   
                  {   
                      fos.write(buf,   
0,   len);   
                  }   
              }   

          }   
          
catch   (Exception   exc){}   
            
    }  
}


分享到:
评论

相关推荐

    图片以二进制存取数据库

    图片以二进制形式存入数据库,并从数据库取出显示

    VC ADO技术存取BLOB二进制大数据.rar

    VC 使用ADO技术存取BLOB二进制大数据,将大对象以二进制方式存储在数据库中,存取的方式与普通数据有所区别,里面包括有图像的存取,带个实例的工程比较完整。

    Delphi将图片以二进制方式存储在数据库BLOB字段中.rar

    Delphi将图片以二进制方式存储在数据库BLOB字段中,将使用TStream读写数据,利用BLOB字段进行图像数据的存取,Blob存变量,具体程序请参考useBlob目录中的代码。

    使用二进制存取用户头像

    使用二进制存取用户头像

    SQLSERVER中进行图像存取的实现方法

    在数据库应用项目开发中,经常会使用一些二进制的图像数据,存储和读取显示图像数据主要采用的是路径链接发和内存流法。路径链接法是将图像文件保存在固定的路径下,数据库中只存储图像文件的路径和名称,此方法...

    VC++使用ADO实现BLOB二进制大对象数据的存取

    内容索引:VC/C++源码,数据库应用,二进制,BLOB 在vc++开发过程中,有时候需要将数据以二进制方式存储在数据库中,本代码就是实现这一过程的示例,VC++使用ADO实现BLOB二进制大对象数据的存取,其存取的方式与普通...

    如何用VC实现对超长数据库字段操作

    数据库在实际的开发过程中常常需要存储较大的二进制数据对象,如图像、音频文件、视频文件或其他二进制数据,这些数据称之为二进制大对象BLOB(Binary Large Object),其存取方式与普通数据有所区别。在数据库的表中...

    如何用VB存取SQL Server中的图像数据

    本文介绍的用VB接口存取MIS SQL Server中大二进制数据的方法,不但适用于图像文件,同样适用于其它类型的文件。该方法应用于医院管理系统的图像存取中,在存取速度、对系统的性能影响等方面都取了满意的效果。

    SQL Server对图像数据的存储机制介绍

    本文介绍的用VB接口存取MIS SQL Server中大二进制数据的方法,不但适用于图像文件,同样适用于其它类型的文件。该方法应用于医院管理系统的图像存取中,在存取速度、对系统的性能影响等方面都取了满意的效果。

    ASP.NET开发实战1200例(第Ⅰ卷)第二十章

    实例532 将个人头像以二进制流形式存储到 数据库中 807 实例533 读取并显示数据库中以二进制形式 存储的头像 809 实例534 解决同名文件覆盖问题实现上传图片 统一命名 810 实例535 开源节流——使用缓存区输出图像 ...

    ReadSaveImage .rar

    VC操作ACCESS数据库,存取二进制流图片。VS2017环境下编译通过,亲自编写,测试可用。包含六个功能:新建数据库,打开数据库,存储Pixel,读取Pixel,存储Image,读取Image。

    基于Web的电力调度信息系统中图像存取方案研究 (2008年)

    为有效地处理电力调度信息系统中图像数据存取问题,提出将图像转换为二进制流存储于数据库中,将图像提交到Web服务器的文件系统中,以及使用XML文档存储图像3种方案,并分析其各自的优缺点及适用场合。3种方案已经...

    数据库中存储大量图片设计

     对备注二进制信息的存储可以采用以下三种方式;  方法一:文件保存在固定的路径下,数据库中存取文件路径和名称  方法二:数据库中用blob类型或者varbinary类型字段存储备注文件  方法三:在本地用Power...

    2014计算机作业1答案.doc

    分别简述存储容量、字节、字、字长的概念 答:存储器容量:指的是存储设备可容纳二进制信息的最大字节数,是衡量 计算机存储二进制信息量大小的一个重要指标。 字节(Byte):是计算机信息技术用于计量存储容量和传输...

    C#编程经验技巧宝典

    98 &lt;br&gt;0153 如何自定义数字小数点左边分组位数 98 &lt;br&gt;0154 格式化输入数据为货币格式 99 &lt;br&gt;0155 如何计算两个整数的乘积 99 &lt;br&gt;0156 如何将二进制数转换为十进制数 100 &lt;br&gt;0157 如何...

    经典SQL脚本大全

    │ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql │ bcp-数据导入导出-二进制文件.sql │ bcp-数据导出为文件.sql │ bcp表数据存为XML....

    20秋东大《计算机应用基础》在线平时作业1.doc

    A.IP地址从32位的二进制地址缩减为8位的二进制地址 B.IP协议再也不需要了 C.我们只需要简单的记住一个网站域名,而不必记住IP地址 D.IP地址再也不需要了 答案:C 8.以下____不是常用的声音文件格式. A.JPEG文件 B....

    Visual C++实效编程百例光盘源代码

     实例72 读写大块资料(二进制)文件   实例73 文件变更通知  第8章 数据库   实例74 格式化数字   实例75 中文大写数字   实例76 存取图像字段   实例77 ADO控制Access数据库   实例78 SQL语句...

    《计算机应用基础》习题册加答案解析.doc

    A.8位二进制数 B.1位二进制数 C.1位十六进制数 D.2位八进制数 下列4中软件中属于系统软件的是__c____。 A.PowerPoint B.Word C.UNIX D.Excel 计算机内部采用二进制数进行运算、存储和控制,有时还会用到十...

Global site tag (gtag.js) - Google Analytics