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頁面對應(yīng)的代碼
????? 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/是數(shù)據(jù)庫表中的字段名,由于表中有多個blob字段,所以用變量來表示其名稱
????? String actionpart = theForm.getActionpart() ;
????? System.out.println("actionpart is:"+actionpart) ;
????? file://取/得數(shù)據(jù)庫連接,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;
?????? }
? }
}