`

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

阅读更多
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){}   
            
    }  
}


分享到:
评论

相关推荐

    图片以二进制存取数据库

    当涉及到图像等非结构化数据时,一种常见的方法是将图片以二进制形式存入数据库。这种方法被称为“二进制大对象”(Binary Large Object,简称BLOB)。下面将详细阐述如何实现图片以二进制形式存入数据库,并从...

    C#实现把图片转换成二进制以及把二进制转换成图片的方法示例

    在上面的代码中,我们首先使用MemoryStream将二进制数组转换成流,然后使用Image.FromStream将流转换成图片,并将其显示在PictureBox控件中。 三、图片保存到数据库中 在C#中,可以使用ADO.NET将图片保存到数据库...

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

    在这个特定的案例中,"Delphi将图片以二进制方式存储在数据库BLOB字段中"是一个常见的实践,用于高效、安全地保存图片数据。BLOB(Binary Large Object)字段是数据库系统中用来存储大量二进制数据的类型,非常适合...

    使用二进制存取用户头像

    "使用二进制存取用户头像"这个主题涉及到如何将图像数据以二进制形式存储并从数据库中检索,以提高数据传输速度和节省存储空间。下面将详细介绍这个过程及其相关知识点。 一、二进制数据存储 1. 图像文件格式:...

    基于asp.net C#的二进制图片的存取

    在ASP.NET平台中,开发人员经常需要处理二进制数据,特别是当涉及到图像和其他多媒体文件时。本主题将深入探讨如何使用C#语言在VS2008中进行二进制图片的存取操作,这对于构建动态网站和Web应用程序至关重要。 一、...

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

    例如,对于图像数据,我们可以先读取文件到内存,然后将其转换为二进制流,最后通过ADO的`Command`对象或`Recordset`对象的`Fields`集合中的`Value`属性将二进制流写入到BLOB字段。 **3. ADO操作BLOB的步骤** - **...

    文本文件与二进制文件

    二进制文件的存取过程则是读取文件的二进制比特流,然后按照应用程序指定的解码方式来解释这个流,最后将解释结果显示出来。 在编程方面,文本文件和二进制文件的处理方式相同,即按照既定的编码方式来解释和译码。...

    分段读取二进制文件

    二进制文件是由计算机可以直接理解的0和1组成的,通常用于存储图像、音频、视频或程序等数据。与文本文件不同,它们不遵循特定的字符编码,而是按照特定格式存储数据。 在描述的场景中,我们需要存储一个波形二进制...

    二进制存取图片.rar

    在编程领域,尤其是在使用.NET框架的C#语言中,二进制存取...综上所述,二进制存取图片是编程中一个实用的技能,尤其在处理大量图像数据或需要高效读写时。理解和掌握这个概念对于开发涉及图像处理的应用程序至关重要。

    VB读取长二进制实例(集成于EXCEL文件中)

    通常,这涉及到创建一个文件流对象,将二进制数据写入该流,然后保存为文件。 ```vb Dim binaryData As Variant '二进制数据变量 Dim fso As Object '文件系统对象 Set fso = CreateObject("Scripting....

    ADO实现大型二进制数据在数据库中的存取

    ADO 实现大型二进制数据在数据库中的存取 本文将详细介绍 ADO 在数据库中的大型二进制数据存取实现,包括 ADO 技术的概述、Recordset 对象、Stream 对象、Field 对象等关键对象的应用,以及大型二进制数据在数据库...

    Oracle,SQL2000,MYSQL存取图片或二进制数据的功能文件

    1. **Oracle存取图片或二进制数据** Oracle数据库使用BLOB(Binary Large Object)数据类型来存储图片或任何其他二进制数据。BLOB类型可以存储最大4GB的数据,足以容纳大多数图像文件。`OracleUploader.java`可能是...

    基于分布式FTP的二进制大对象存取算法.pdf

    文件中的标题提到了“基于分布式FTP的二进制大对象存取算法”,这暗示了文件内容可能与分布式文件传输协议(FTP)、二进制大对象(BLOB)存储以及相应的存取算法有关。BLOB通常指那些非结构化的、在互联网服务中常见的...

    二进制图片存取读入.

    ### 二进制图片存取读入的核心技术与实践 #### 一、二进制图片存取概述 在计算机编程领域,尤其是Web开发或者桌面应用开发中,经常会遇到需要处理图像的情况。对于图像数据的存储,最常见的做法是将其转换为二进制...

    C#写的二进制存取图片工程实例代码

    这个"二进制存取图片工程实例代码"是一个基于VS2008的项目,旨在教授如何利用C#来读取、写入和操作二进制形式的图片文件。下面将详细解释相关知识点。 1. **C#语言基础**: C#是微软公司推出的一种面向对象的编程...

    二进制文件与文本的区别

    二进制文件通常用于存储程序的中间结果、图像、音频、视频等非文本数据,或者需要高效存取的数据结构。 在处理二进制文件时,需要使用特定的程序或库函数,如C语言的fread()和fwrite(),来读写文件中的数据。而文本...

    PB存取超过32k的二进制文件的实例 pb 10以上

    ### PB存取超过32k的二进制文件的实例详解 #### 一、引言 在PowerBuilder(简称PB)开发中,处理大文件尤其是超过32KB大小的二进制文件时,经常会遇到一些挑战。这是因为PB默认对二进制数据的处理有一定的限制。...

    ASP.NET 存取二进制图片

    ASP.NET 存取二进制图片是Web开发中常见的需求,尤其在处理用户上传的图片或者存储数据库中的图像数据时。在这个场景下,我们需要将图片转换为二进制数据存储到数据库(例如SQL Server 2008),然后在前端页面上以...

Global site tag (gtag.js) - Google Analytics