如何通过struts以oci协议将文件上传到oracle数据库的blob字段
来源:互联网 发布:js 跳转至指定页面 编辑:程序博客网 时间:2024/06/07 01:58
Class文件如下:
import java.io.*;
import java.sql.*;
import java.util.Date ;
import oracle.sql.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;
public class UploadAction extends Action
{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (form instanceof UploadForm) {
Date date = new Date();
System.out.println("-------------File Upload Begins-------------------") ;
UploadForm theForm = (UploadForm) form;
file://通过struts的FormFile类来获得上传的文件,前台jsp页面对应的代码
file://<html:file property="theFile" />
FormFile file = theForm.getTheFile();
Connection conn = null;
PreparedStatement ps = null ;
String union_Id = "" ;
String union_Version = "" ;
union_Id = theForm.getUnion_Id() ;
union_Version = theForm.getUnion_Version() ;
file://actionpart是数据库表中的字段名,由于表中有多个blob字段,所以用变量来表示其名称
String actionpart = theForm.getActionpart() ;
System.out.println("actionpart is:"+actionpart) ;
file://取得数据库连接,dbPool的源代码附在后面
dbPool dbp = new dbPool();
conn = dbp.getConnection() ;
ResultSet BlobDetails = null;
Statement stmt = null;
try {
InputStream stream = null;
FileInputStream fstream = null;
stream = file.getInputStream();
System.out.println("------------uploadFileSize is : "+stream.available() +"------------") ;
conn.setAutoCommit(false);
stmt = conn.createStatement();
file://先用empty_blob()来初始化该字段
sql = " update regunion set " + actionpart + " = empty_blob() where union_id= " + union_Id +" and union_Version = "+ union_Version;
stmt.executeUpdate(sql) ;
conn.commit() ;
stmt.close() ;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
sql = "select " +actionpart + " from regunion where union_id= " + union_Id +" and union_Version = "+ union_Version + " for update ";
BlobDetails = stmt.executeQuery(sql);
if (BlobDetails.next()) {
BLOB l_mapBlob = (BLOB)BlobDetails.getBlob(1);
OutputStream l_blobOutputStream = ((BLOB) l_mapBlob).getBinaryOutputStream();
byte[] l_buffer = new byte[10* 1024];
int l_nread = 0;
while ((l_nread=stream.read(l_buffer)) != -1) // Read from file
{
l_blobOutputStream.write(l_buffer,0,l_nread); // Write to Blob
}
stream.close();
l_blobOutputStream.close ();
}
BlobDetails.close();
conn.commit() ;
}
catch (FileNotFoundException fnfe) {
fnfe.printStackTrace() ;
return mapping.findForward("error");
}
catch (IOException ioe) {
ioe.printStackTrace() ;
return mapping.findForward("error");;
}
catch(SQLException ex){
ex.printStackTrace() ;
return mapping.findForward("error");;
}finally{
if(conn != null){
try{
stmt.close();
conn.close() ;
}catch(Exception sqle){
sqle.printStackTrace() ;
}
}
}
request.setAttribute("union_Id",union_Id) ;
request.setAttribute("union_Version",union_Version) ;
System.out.println("-------------File Upload Ends-------------------") ;
return mapping.findForward("success");
}else{
return null;
}
}
}
附:dbPool.java程序
package com.prient.nbsc.unifylaw;
import java.sql.*;
import com.prient.nbsc.common.DBPOOL;
public class dbPool {
public Connection getConnection(){
try {
Connection conn = null;
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String bridge = "jdbc:oracle:thin:@10.6.89.2:1521:sjk";
conn = DriverManager.getConnection(bridge,"user","user") ;
return conn;
}
catch (Exception e) {
System.out.println(e);
return null;
}
}
}
- 如何通过struts以oci协议将文件上传到oracle数据库的blob字段
- struts+hibernate上传图片保存到oracle的blob字段
- JDBC上传图片文件到MySQL数据库的blob字段
- C#将文件保存到Oracle的BLOB字段
- Oracle如何通过Database Link复制远程数据库表的CLOB/BLOB字段数据到本地数据库?
- 设置oracle中的blob字段,将xml文件写入到数据库中
- fileupload上传文件存储到oracle Blob字段中
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- JAVA通过Hibernate将文件写入ORACLE数据的BLOB字段 代码示例
- ibatis+Struts2 处理Oracle Blob字段文件的上传、更新
- Asp.net 上传文件到Oracle数据库Blob格式
- 上传文件通过mybatis存储到数据库的BLOB格式中
- 通过oracle存储过程的Blob参数上传文件
- 如何读取Oracle的BLOB字段里的文件
- 如何读取Oracle的BLOB字段里的文件
- 字符串如何存到数据库blob字段
- 深度探索C++对象模型第七章 站在对象模型的尖端
- 自己编写JAVA环境下的文件上传组件
- Oracle数据库BLOB字段的存取
- 用ASP动态生成JavaScript的表单验证代码
- 使用XMLHttp和ADODB.Stream取得远程文件并保存到本地
- 如何通过struts以oci协议将文件上传到oracle数据库的blob字段
- 浅谈因特网时代的操作系统演变
- 下一代IT技术焦点:信息交换
- 在VC中动态改变菜单
- VC++ ADO开发实践之一
- VC++ ADO开发实践之二
- VC++ ADO开发实践之三
- VC++ ADO开发实践之四
- VC++ ADO开发实践之五