`
czllfy
  • 浏览: 108258 次
  • 来自: ...
社区版块
存档分类
最新评论

图片上传到oracle数据库的blob字段

阅读更多

Ry_jbxx_list.jsp
<%String href_edit="window.open('"+linkinfoURL+"TASK=edit&RY_ID="+jatt.RY_ID+"&RYLXBZ="+(String)request.getAttribute("RYLXBZ")+"&DWLX="+dwlx+"','ry_jbxx_edit','left=5,top=10,height=480,width=900,menubar=no,resizable=yes,location=no,toolbar=no,scrollbars=yes')";%>

Ry_jbxx_edit.jsp

在javascript代码区中增加两个函数
function pic_change()
{
document.ry_jbxx_ActionForm.show_picture.src=document.ry_jbxx_ActionForm.PIC.value;
((document.ry_jbxx_ActionForm.show_picture.fileSize/1024).toFixed(2)>1)?alert("文件大小:"+(document.ry_jbxx_ActionForm.show_picture.fileSize/1024).toFixed(2)+"kb\n\r图片长度:"+document.form1.show_picture.width+"\n\r图片高度:"+document.ry_jbxx_ActionForm.show_picture.height):alert(" 你的图片不符合规格");
}
function CaricaFoto(img)
{
  try{foto1= new Image();foto1.src=(img);Controlla(img);
  }catch(e){}
}

<html:form action="ry_jbxx_Action.do" styleId="ry_jbxxform" method="post" enctype="multipart/form-data">


  <TH>身份证号:</TH>
        <TD><html:text   styleId="ZFZid" styleClass="BOX" property="SFZ" maxlength="18" c_type="idcard" /> </TD>
以后增加以下代码
     <td rowspan="6" width="35%">
          <table width="100%">
            <tr>
              <td>
                <div align="center">
                  <A HREF="javascript:CaricaFoto(document.show_picture.src)" border="0">
                  <img name="show_picture"  border="1" src="<%com.chuangda.util.web.WriteHtmlElement.get_pic(request,out);%>"  width="150" height="180"  >
                  </a>
                  <br />
                  <input type="file" name="PIC" id="PIC" alt="照片上传" width="20" class="Button_B" onchange='javascript:pic_change()'/>
                </div>
              </td>
            </tr>
          </table>
        </td>

ry_jbxx_dao.java中
  public boolean update_ry_jbxx(Ry_jbxx_ActionForm thisForm)里
在Dbprocess.setdeleteData(t_dsql);后增加
      if(thisForm.getPIC().getFileSize()>0)
      {
         Dbprocess.insert_pic(thisForm.getPIC(),"RY_ID",thisForm.getRY_ID(),"T_RY_JBXX","picture");
      }

在public boolean insert_ry_jbxx(Ry_jbxx_ActionForm thisForm) 函数里
Dbprocess.setinsertData(sql);后增加
      if(thisForm.getPIC().getFileSize()>0)//czllfy 2007.3.29 add start
      {
        Dbprocess.insert_pic(thisForm.getPIC(),"RY_ID",thisForm.getRY_ID(),"T_RY_JBXX","picture");//czllfy 2007.3.29 新增加的一个函数
      }

Dbprocess.java里
重载insert_pic函数,
  public static boolean insert_pic(FormFile formfile,String indexname,String id,String tableName,String FiledName)
  {
      byte[] data = null;
      boolean result=true;
      int length = formfile.getFileSize();
      PreparedStatement ps = null;
      Statement st =null;
      ResultSet rs = null;
      Connection con = null;
      try {
          con = Dbconnection.getConnection();
          con.setAutoCommit(false);
          data = formfile.getFileData();
          st = con.createStatement();
          String sql="select "+FiledName+" from "+tableName+" where "+indexname+"='"+id+"' for update";
          rs=st.executeQuery(sql);
          if(rs.next()){
          oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob(1);
          if(blob==null){
            st.execute("update "+tableName+" set "+FiledName+"=empty_blob() where " +indexname+"='"+id+"'");
            rs=st.executeQuery(sql);
            if(rs.next()){
              blob = (oracle.sql.BLOB) rs.getBlob(1);
            }
          }
          if (blob != null) {
            BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
            out.write(data);
            out.flush();
           }
          con.commit();
          }else
              result=false;

    } catch (Exception e) {
      e.printStackTrace();
      result=false;
    }
    finally{
      Dbconnection.tryClose(con,st,rs);
    }
  return result;
  }

在WriteHtmlElement.java里修改函数get_pic()的内容为
public static void get_pic(HttpServletRequest request,JspWriter out ){
    String id="";
    ResultSet rs = null;
    String sql="";
    String rootpath=request.getContextPath().toString();
    int len=0;
    String ywb="";
    try{
        id=request.getParameter("ID");
        if(id==null || id.equals("")){
          id=request.getParameter("RY_ID");
          if(id==null||id.equals(""))
          {
            out.print("images/no_pic.gif");
            return;
          }
        }
    }catch(Exception  e){}
    ywb=(String)request.getAttribute("YW_TABLE");
    if(ywb.equals("NTLJJSY_JSZK"))
    {
         sql="select length(a.picture) as pic from ntljjsy_jszk a where a.id='"+id+"'";
    }
    else if(ywb.equals("T_RY_JBXX"))//czllfy 2007.2.29 add start
    {
       sql="select length(a.picture) as pic from t_ry_jbxx a where a.ry_id='"+id+"'";
    }//czllfy 2007.2.29 add end
    else
    {
        sql="select length(a.picture) as pic from ntljjsy_jszk a,"+ywb+" b where a.id=b.zid and b.id='"+id+"'";
    }
    try {
        rs=Dbprocess.getResult(sql);
        if(rs.next())
        {
          len = rs.getInt(1);
        }
        else
        {
            out.print("images/no_pic.gif");
            return;
        }
        if(len<=1)
            out.print("images/no_pic.gif");
        else{
            if(ywb.equals("NTLJJSY_JSZK"))
            {
                out.print(rootpath+"/picwebshow?id="+id+"&zb=ntljjsy_jszk&zd=picture");
            }
            else if(ywb.equals("T_RY_JBXX"))     //czllfy 2007.2.29 add start
            {
              out.print(rootpath+"/picwebshow?ry_id="+id+"&zb=t_ry_jbxx&zd=picture");
            }                                    //czllfy 2007.2.29 add end
            else
            {
                out.print(rootpath+"/picwebshow?id="+id+"&zb=ntljjsy_jszk&ywb="+request.getAttribute("YW_TABLE")+"&zd=picture");
            }
        }
    } catch (Exception e1) {
        try {
            out.print("images/no_pic.gif");
        } catch (IOException e2) {
        }
    }
}

PicWebShow.java里
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String id = request.getParameter("id");
    if(id==null||id.equals("")) //czllfy 2007.2.29 add start
    {
      id=request.getParameter("ry_id");
    }                             //czllfy 2007.2.29 add end
    String zb = request.getParameter("zb");
    String ywb = request.getParameter("ywb");
    String zd = request.getParameter("zd");
    InputStream in = null;
    OutputStream os = null;
    try {
      if (id != null)
      {
        response.reset();
        response.setContentType(CONTENT_TYPE_JPEG);
        PicDAO _dao = new PicDAO();
        if(zb.equalsIgnoreCase("ntljjsy_jszk") && ywb==null)
        {
            in = _dao.getPic_jsz(id,zb,zd);
        }
        else if(zb.equalsIgnoreCase("T_RY_JBXX"))  //czllfy 2007.2.29 add start
        {
          in=_dao.getPic_ry(id,zb,zd);
        }                                          //czllfy 2007.2.29 add end
        else if(zb.equalsIgnoreCase("t_sb_cpxhb"))
        {
          in = _dao.getPic_jsz(id,zb,zd);
        }
        else
        {
            in = _dao.getPic(id,zb,ywb,zd);
        }

        os = response.getOutputStream();
        int len = 10 * 1024 * 1024;
        byte[] data = new byte[len];
        int length = 0;
        int i = 0;
        System.err.println("in is null!");
        if (in != null )
        {
          while ( (i = in.read(data)) != -1) {length++;}
          System.err.println("length = " + length);
          System.err.println("data = " + data.length);
          if(data != null )
          {
            os.write(data);
          }
        }
      }
    }
    catch (IOException ex) {}finally{
      try {
        if(in != null){in.close(); in = null;}
//        if(os != null){os.close(); os = null;}
      }
      catch (Exception ex) {
        }

    }
  }
picDAO.java里增加函数
  public InputStream getPic_ry(String id,String zb,String zd) {
    InputStream in = null;
    try {
     in =  _sql.getPic_ry(id,zb,zd);
    }
    catch (Exception e) {
      LogWriter.error("获取图片的流出错" + e.getMessage());
      return in;
    }
    finally {
      _sql = null;
    }
    return in;
  }
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    批量导出ORACLE数据库BLOB字段生成图片

    批量导出Oracle数据库中的BLOB字段生成图片,是一项常见的需求,尤其对于那些需要将数据库中的图片资源导出到本地文件系统的情况。下面将详细介绍这一过程及其相关知识点。 首先,我们需要理解BLOB类型。BLOB...

    批量导出ORACLE数据库BLOB字段生成文件

    本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...

    基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案.pdf

    "基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案" 本文介绍了一种基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案。该方案使用JSP技术读取ORACLE数据库中的BLOB字段存储的坐标点,然后将坐标传递到...

    java中读取ORACLE中BLOB字段存储的图片

    ### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...

    java对oracle数据库中blob字段的处理

    Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB字段的基本方法 #### 1. 读取BLOB字段 在Java中,读取Oracle数据库中的BLOB字段通常通过`...

    C#访问oracle数据库类,带blob字段读写

    以上就是使用C#访问Oracle数据库并处理Blob字段的基本方法。在实际开发中,还需要考虑错误处理、事务管理、连接池等高级概念,以确保代码的健壮性和性能。同时,为了安全起见,建议使用参数化查询来防止SQL注入攻击...

    oracle查询blob字段照片(jpeg) 像素大小sql

    为了获取Blob字段中的JPEG图片尺寸,我们需要先定位到图片尺寸信息的位置。根据题目中的部分描述,我们可以得知JPEG图片尺寸信息位于Blob数据的特定位置上。这里使用的是`DBMS_LOB.substr`函数来截取Blob数据的一...

    kettle通过java代码将数据库blob 字段抽取到本地文件

    kettle通过java代码将数据库blob 字段抽取到本地文件

    基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案

    ### 基于JSP访问ORACLE数据库BLOB字段并显示图形的解决方案 #### 概述 本文介绍了一种利用JSP技术访问Oracle数据库中BLOB字段存储的坐标点,并将其转换为图形显示的方法。这种方法充分利用了JSP与Java的集成优势,...

    Oracle中Blob字段的写入处理

    此文档是对于oracle数据库中blob类型字段二进制大对象的读取和解析

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    1. **数据准备**:确保ORACLE数据库中的BLOB字段包含所需的数据,并且是完整的。可能需要进行数据验证,以确保所有数据都能被正确读取。 2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,...

    oracle中的BLOB(照片)转换到mysql中

    1. **查询BLOB数据**:使用SQL查询语句从Oracle数据库中选择含有BLOB字段的照片记录。例如: ```sql SELECT photo_blob FROM photos WHERE id = ; ``` 这里`photo_blob`是BLOB类型的列,`&lt;photo_id&gt;`是你想获取...

    Oracle blob字段上传下载

    ### Oracle Blob字段上传与下载详解 #### 一、概述 在数据库系统中,二进制大对象(Binary Large Object,简称BLOB)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。Oracle数据库支持Blob...

    oracle中读取blob字段.doc

    在Java应用程序中读取Oracle数据库中的BLOB字段通常涉及到几个步骤:建立数据库连接、执行查询语句、获取结果集并从中提取BLOB数据,最后将这些数据写入到文件中。 ##### 3.1 加载Oracle驱动 在Java程序中使用...

    oracle存取图片blob字段

    oracle 存读数据库的blob字段 .net有两种方式向Oracle的blob字段中存储图片:

    c#操作oracle数据库Blob源码

    以上就是使用C#操作Oracle数据库Blob字段的基本步骤,包括插入和更新操作。在实际应用中,可能还需要考虑异常处理、事务管理等更复杂的细节。了解这些知识有助于开发高效、可靠的数据库应用程序。

    c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库

    以上就是使用C# WinForm操作Oracle数据库Blob字段,存储和读取图片的基本步骤。在实际开发中,还需要考虑到错误处理、事务管理、资源释放等细节,以确保代码的健壮性和高效性。通过不断实践和学习,你可以更好地掌握...

    oracle blob 字段 读写 delphi

    Oracle数据库中的BLOB(Binary Large Object)字段是用来存储大量二进制数据的,例如图片、文档或音频文件。在Delphi编程环境中,处理这类数据时需要掌握特定的API调用和方法。本篇文章将深入探讨如何在Delphi中对...

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle数据库。 1. **BLOB与CLOB数据类型**: BLOB(Binary Large Object)存储二进制大对象,如图像、音频或视频文件。CLOB(Character Large Object)...

    JDBC操纵Oracle数据库中的BLOB字段

    ### JDBC操纵Oracle数据库中的BLOB字段 在现代的数据库应用中,处理二进制大对象(BLOB)数据是一项常见的需求,特别是在存储图像、音频或视频等多媒体内容时。本文将深入探讨如何使用Java Database Connectivity ...

Global site tag (gtag.js) - Google Analytics