`

上传多个文件到oracle数据库

 
阅读更多

/*
* Created on 2005-9-27
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.system.web;

import java.sql.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.jspsmart.upload.*;
import com.mdcl.sc.common.dao.DAOUtils;//dao
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
/**
* @author hanxr
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class DoUpload extends HttpServlet
{
private ServletConfig config;

final public void init(ServletConfig config) throws ServletException
{
this.config = config;
}

final public ServletConfig getServletConfig()
{
return config;
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request,response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String titleid=new String();//标题id
String fileName=new String();//上传的文件名称
try
{
System.out.println("开始上传附件");
SmartUpload mySmartUpload = new SmartUpload();
Connection conn = DAOUtils.getConnection();//链接oracle数据库
conn.setAutoCommit(false);//设置不自动提交。
Statement stmt=conn.createStatement(ResultSet.TYPE_FORWARD_ONLY ,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=null;
mySmartUpload.initialize(config, request, response);
mySmartUpload.setMaxFileSize(1024 * 1024 * 10);//上传文件最大尺寸
mySmartUpload.upload();//上传
Enumeration enumer=mySmartUpload.getRequest().getParameterNames();
String strsql=new String();//sql语句
for (int i=0;i<mySmartUpload.getFiles().getCount();i++)//循环上传附件
{
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);//取得文件
fileName=myFile.getFileName();//取得文件名
//String
// filetype=mySmartUpload.getFiles().getFile(i).getFileExt();//获取后缀名
if(!myFile.isMissing())
{
myFile.saveAs("uploadfile/"+fileName);//保存上传的文件到服务器的uploadfile目录下
System.out.println("文件名:"+fileName);//后台显示文件名
java.io.File sfile=new java.io.File(request.getRealPath("")+"//uploadfile//"+fileName);//创建文件对象
java.io.InputStream inStream=new java.io.FileInputStream(sfile);//将文件读到流中
int fileSize=myFile.getSize();//获取文件大小(字节)
if(fileSize>mySmartUpload.getSize())
{
System.out.println("上传文件过大!");
int err=1/0;
}
System.out.println("文件大小:"+(int)(fileSize/1024)+"KB");//后台显示文件大小
if(fileSize!=0)
{
String contenttype = myFile.getContentType();//获得文件类型
System.out.println("文件类型:"+contenttype);//后台显示文件类型
String blobzd=new String();//blob字段名
if(!contenttype.trim().equals("image/pjpeg") && !contenttype.trim().equals("image/gif"))
{
System.out.println("上传的文件不是规定格式的图片!");
int err=1/0;
}
blobzd="img";//图片表图片字段名称
strsql="insert into tblpicture(id,titleid,num,picture,img,thumbnail) values(pictureid.nextval,"+titleid+","+fileSize+",'"+contenttype.trim()+"',empty_blob(),empty_blob())";//插入一条空图片数据进图片表
stmt.execute(strsql);
//------------生成缩略图------------------//
BufferedImage image;
Image img=null;
Toolkit tk=Toolkit.getDefaultToolkit();
Applet app=new Applet();
MediaTracker mt = new MediaTracker(app);
img=tk.getImage(request.getRealPath("")+"//uploadfile//"+fileName);//获取原始图
mt.addImage(img, 0);
mt.waitForID(0);
double rate1=((double)img.getWidth(null))/120.0+0.1;
double rate2=((double)img.getHeight(null))/120.0+0.1;
double rate=rate1>rate2?rate1:rate2;
int new_w=(int)(((double)img.getWidth(null))/rate);
int new_h=(int)(((double)img.getHeight(null))/rate);
BufferedImage buffImg = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
Graphics g = buffImg.createGraphics();
g.setColor(Color.white);
g.fillRect(0,0,new_w,new_h);
g.drawImage(img,0,0,new_w,new_h,null);//绘制缩略图
g.dispose();
java.io.OutputStream tempout=null;
java.io.File tempfile=new java.io.File(request.getRealPath("")+"//uploadfile//"+fileName+"_small.jpg");
tempout= new FileOutputStream(tempfile);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
encoder.encode(buffImg);
if(tempout!=null)tempout.close();
//------------缩略图生成完毕----------------//
//------------缩略图入库-------------------//
java.io.InputStream tempinstream=new java.io.FileInputStream(tempfile);//将缩略图文件读到流中
strsql="select thumbnail from tblpicture where titleid="+titleid+" and dbms_lob.getlength(thumbnail)=0 for update ";//选择图片表的缩略图字段更新
rs=stmt.executeQuery(strsql);
if (rs !=null &&rs.next())//写缩略图数据进blob类型字段
{
System.out.println("缩略图入库!");
oracle.sql.BLOB tempblob=((oracle.jdbc.OracleResultSet)rs).getBLOB("thumbnail");
tempout = tempblob.getBinaryOutputStream();
byte[] tempbytes = new byte[(int) tempfile.length()];//创建缓冲区
tempinstream.read(tempbytes);
tempout.write(tempbytes);
tempout.flush();
stmt.execute("commit");
if(tempout!=null)tempout.close();
}
if(tempinstream!=null)tempinstream.close();
if(tempfile!=null){if(tempfile.delete())System.out.println("缩略图入库完毕!临时文件已删除!");}//删除缩略图临时文件
//---------------缩略图入库完毕-------------//
strsql="select img from tblpicture where titleid="+titleid+" and dbms_lob.getlength(img)=0 for update ";//选择图片表的图片字段更新
rs=stmt.executeQuery(strsql);
if (rs !=null &&rs.next())//写数据进blob类型字段
{
oracle.sql.BLOB blob=((oracle.jdbc.OracleResultSet)rs).getBLOB(blobzd);
java.io.OutputStream outStream = blob.getBinaryOutputStream();
byte[] bytes = new byte[fileSize];//创建缓冲区
inStream.read(bytes);
outStream.write(bytes);
outStream.flush();
stmt.execute("commit");
if(outStream!=null)outStream.close();
}
}
if(inStream!=null)inStream.close();
if(sfile!=null){if(sfile.delete())System.out.println("临时文件已删除");}//删除临时文件
}
}
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
System.out.println("文件上传完毕");
}
catch(Exception ex1)
{
System.out.println(ex1.toString());
}

}
}


分享到:
评论

相关推荐

    图片批量导入oracle数据库

    本话题聚焦于如何批量导入图片到Oracle数据库,这是一种常见的需求,特别是在处理大量图像数据的项目中。Oracle数据库作为一款强大的关系型数据库管理系统,支持多种类型的数据存储,包括BLOB(Binary Large Object...

    java_Excel上传数据到Oracle数据库

    在Java编程环境中,将Excel数据上传到Oracle数据库是一项常见的任务,尤其在数据处理和系统集成中。本项目涉及的关键技术包括Java、jxl库(用于处理Excel文件)和Oracle数据库的连接与操作。以下是对这些知识点的...

    Oracle数据库教程——nbu恢复oracle数据库案例

    本文将通过一个具体的案例来详细介绍如何使用NBU进行Oracle数据库的备份与恢复操作。 #### 二、环境准备 在开始之前,我们需要完成一系列的准备工作,包括安装操作系统、数据库系统以及NetBackup软件,并进行必要的...

    上传图片到Oracle数据库

    完成以上步骤后,你可以调用`UploadImage`函数,传入数据库连接字符串和要上传的图片文件路径,即可将图片数据保存到Oracle数据库中。这个过程可以扩展到处理多张图片,或者通过文件对话框让用户选择图片。 需要...

    ssh上传下载文件到oracle

    总之,实现SSH框架上传文件到Oracle并从Oracle下载文件到本地,需要结合Spring的文件上传支持、Struts2的Action处理、Hibernate的ORM功能以及Oracle数据库的操作,确保各个组件协同工作,完成文件的存取操作。...

    JSP+Oracle数据库组建动态网站经典实例.

    这份实例集合涵盖了多个实际应用系统,包括论坛、网上订票、新闻发布、资源下载和人事管理等多个方面,为学习者提供了全面而实用的实践指导。 首先,JSP是Java平台上的一个服务器端脚本语言,用于生成动态网页内容...

    Java代码备份(windows和Linux)服务器oracle数据库

    总结来说,通过Java实现Oracle数据库备份,主要涉及到JDBC的使用、操作系统命令的调用、文件操作、错误处理、定时任务以及安全性的考量。在实际应用中,根据具体的业务需求和环境,可能还需要进一步优化和扩展备份...

    ORACLE数据库安装

    例如,增加`nproc`(最大进程数)和`nofile`(最大打开文件数),这将允许Oracle数据库运行时使用更多的系统资源。此外,还需要在`/etc/pam.d/login`文件中添加设置以应用这些限制。 4. **调整内核参数**: 修改`/etc/...

    WEB方式将文件上传到ORACLE数据库的技术及实现.pdf

    总的来说,将文件通过Web方式上传到Oracle数据库是一个涉及多层面的技术流程,包括客户端交互、服务器处理、数据库操作以及各种安全性和性能考虑。在实际开发中,需要根据具体需求选择合适的技术方案,并确保系统的...

    linux虚拟机和oracle数据库安装详细步骤

    总的来说,安装Linux虚拟机上的Oracle数据库是一项涉及多个步骤和配置调整的任务。每个环节都需要细心操作,确保系统环境满足Oracle数据库的运行要求。只有这样,才能确保数据库的稳定性和高效运行。

    Oracle数据库实现BBS

    Oracle数据库可以提供一个文件存储区域(BFILE或LOB类型),用于存储文件的元数据,如文件名、大小、路径等。当用户上传文件时,文件会被保存到服务器指定目录,元数据则被插入到数据库对应的表中。在展示时,JSP...

    jsp+servlet+oracle上传图片到数据库(非路径)

    "jsp+servlet+oracle上传图片到数据库(非路径)"这个主题涉及的是一个常见的Web应用开发技术,它利用JavaServer Pages (JSP)、Servlet以及Oracle数据库来实现图片的上传和展示,而不是仅仅存储图片的路径。...

    用mapinfo7.8上传tab文件到oracle

    本文将详细讲解如何使用MapInfo 7.8将TAB文件上传到Oracle数据库,以及涉及的相关知识点。 首先,了解MapInfo的TAB文件格式。TAB文件是MapInfo特有的矢量地图数据格式,包含地理信息,如点、线、多边形等。每个TAB...

    将多媒体文件保存到数据库中,或将数据库中的多媒体文件显示出来

    3. **文件上传**:用户通过前端界面上传多媒体文件时,需要编写代码将文件读取为二进制数据,然后存储到数据库的Blob字段。这通常涉及文件流的读取和写入操作,使用编程语言如Java、Python或C#的相应库函数。 4. **...

    jsp项目链接Oracle数据库(人事管理)

    【标题】:“jsp项目链接Oracle数据库(人事管理)”是一个非常适合初学者的实践项目,它展示了如何使用JSP技术与Oracle数据库进行交互,实现简单的人事管理系统。 【描述】:“初学者练习的好例子!源码都是jsp的...

    delphi利用ADO连接oracle并上传附件(BlOB)

    导入工具可能是一个自定义组件或脚本,用于批量处理文件上传,这可能涉及到多文件读取、并发处理等复杂逻辑。 总的来说,通过Delphi的ADO接口连接Oracle并上传BLOB数据涉及数据库连接、SQL命令构建、参数化查询以及...

    RHEL8安装oracle19C数据库详细步骤.docx

    本文档详细介绍了在 RHEL8 操作系统上安装 Oracle 19C 数据库的步骤,包括安装前的准备工作、创建 Oracle 用户和组、配置文件和禁用服务等多个方面。 一、安装前的准备工作 在安装 Oracle 数据库之前,需要进行...

    备份oracle数据库和fileUpload文件夹下的数据

    Oracle数据库是企业级广泛应用的一款关系型数据库管理系统,而文件上传功能在很多Web应用中是常见的,比如Tomcat服务器中的`webapps`目录下的`fileUpload`文件夹,它通常存储用户上传的各种文件。备份这些数据是为了...

    如何把.dmp文件导入oracle中

    本文将详细介绍如何将一个 `.dmp` 文件导入到Oracle数据库中,并解释在这一过程中可能遇到的一些关键概念。 #### 基础准备 在开始导入之前,我们需要做一些基础准备工作: 1. **了解目标数据库的表空间**:首先...

Global site tag (gtag.js) - Google Analytics