`

上传多个文件到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());
}

}
}


分享到:
评论

相关推荐

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

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

    jbpm对应的ORACLE数据库脚本

    在网上找了很多关于怎样生成jbpm-oracle数据库脚本的文章,没有一个能真正解决实际过程中遇到的问题。后来才知道,那里有一个包的java文件方法同名了,删除之后,就生成成功了!下载我打个包上传给需要的人。

    ssh2多文件的上传与下载

    能够对多个文件进行上传(可以选择上传文件个数,也即上传文件个数不定) 2.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 3.文件保存的名称UUID生成,不过显示并下载的名称都是原文件名称(防止在...

    oracle_11g_win64_10/22

    oracle_11g,由于本人上传权限有限,所以分成多个文件上传,从标题就能看出,共22个文件。 密码:7

    图片上传oracle下载查看

    自己写的一段程序,看网上有很多这样的程序,但是都不是很全面,所以就自己写了一... 功能:里面包含了将图片或者文件上传以blob,clob上传到oracle数据库,并从数据库中将存储的图片显示在页面上,也可以下载到本地

    plupload+jquery+java多文件上传下载功能

    使用plupload实现多文件上传,单文件直接下载/多个文件打包下载 页面使用jquery easyui,后台使用commons包实现,包含oracle数据库建表sql

    绝对好用!extjs中本地照片预览、blob数据在oracle中存取.zip

    此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...

    extjs中本地照片预览、blob数据在oracle中存取

    此压缩包中完全能实现的功能是在extjs中让本地照片预览,并且将地址传递给java后台,将图片文件以blob的形式存储到oracle数据库,并且可以默认将数据库中的数据第一次加载在预览框里(也就是从数据库中读出blob数据...

    ASP.NET网络数据库开发实例精解.part1

    ch11\Example_11_1~ Example_11_18 ---- 第11章中的ASP.NET网络数据库开发,如上传文件和下载文件、读、写和删除文件、同时上传多个文件、发送邮件、处理数据库中图片、使用ASP.NET创建任意图形等; ch12\Example_12...

    数据库导入导出.rar

    数据库导入导出: 在Oracle里设置访问多个SQL Server 把图片上传到oracle表中 Oracle与SQL Server的互连. OralceandSQL2000通过数据链接 Oracle中导入文本数据的方法 数据迁移基础与ORACLE体系结构

    Oracle9i的init.ora参数中文说明

    使用多个 UTL_FILE_DIR 参数即可指定多个目录。请注意所有用户均可读取或写入 UTL_FILE_DIR 参数中指定的所有文件。 值范围: 任何有效的目录路径。 默认值: 无 plsql_v2_compatibility: 说明: 设置 PL/SQL 兼容级...

    ASP.NET网络数据库开发实例精解.part2

    ch11\Example_11_1~ Example_11_18 ---- 第11章中的ASP.NET网络数据库开发,如上传文件和下载文件、读、写和删除文件、同时上传多个文件、发送邮件、处理数据库中图片、使用ASP.NET创建任意图形等; ch12\Example_12...

    oracle_11g_win64_3/22

    oracle_11g,由于本人上传权限有限,所以分成多个文件上传,从标题就能看出,共22个文件。 密码:7

    java定时执行sql语句

    程序连接sqlserver用的是jtds,mysql和oracle的数据库连接驱动类请自行放到程序里:src/libs下(这里不支持重新上传文件(:)。 可根据需要,自行修改源代码,程序功能有限,不喜勿喷,有问题请留言或者私信。

    Excel导入oracle的几种方法

    方法一、使用SQL*Loader这个是用的较多的方法,前提必须oracle数据中目的表已经存在。大体步骤如下:1、将excel文件另存为一个新文件比如文件名为text.txt,文件类型选文本文件(制表符分隔),这里选择类型为csv...

    Oracle第三方工具pl\sql developer绿色中文版

    它可以执行任何SQL语句,包括select,update,delete,insert,create,alter等常用语句,查询速度非常快,并且有 &lt;br/&gt;快捷键,记录执行代码,显示执行时间,显示查询或更新记录数,并且可以打开多个SQL语句执行窗口,不用...

    代码生成器 批量生成实体类、配置文件、存储过程等1.4

    看了下两年前上传的版本,感觉现在已经改了很多东西了,并且支持 Oracle (Oracle不区分大小写,但是可以改字段备注,然后生成实体类,就有大小写了) 代码生成器,可以生成 实体层,业务层,数据访问层, 存储过程, 数据...

    ssh(structs,spring,hibernate)框架中的上传下载

    如果有多个映射文件需要声明,使用类路径映射方式显然比直接单独指定映射文件名的方式要简便。  第27~30行定义了Spring代理Hibernate数据操作的HibernateTemplate模板,而第32~34行将该模板注入到tfileDAO中。  ...

    用MapX与C#开发地理信息系统

    5.2.5用程序实现MapX图元到oracle数据库的上载 42 5.2.6 用程序实现oracle数据表数据下载至MapX中显示 44 5.2.7 图元样式的还原 46 5.3 在网络环境下实现图层信息共享 47 第六章 MAPCTRL控件的开发方法 57 6.1 主要...

Global site tag (gtag.js) - Google Analytics