public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String titleid="1";//标题id
String fileName=new String();//上传的文件名称
dbConn db=new dbConn();
try
{
System.out.println("开始上传附件");
SmartUpload mySmartUpload = new SmartUpload();
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("上传的文件不是规定格式的图片!");
throw new Exception("上传的文件不是规定格式的图片");
}
String sql="insert into tblpicture values(?,?,?,?)";
String sFilePath="\\bea\\wlserver6.1\\config\\mydomain\\applications\\DefaultWebApp\\uploadfile\\"+fileName;
db.WriteFile(1,sFilePath,contenttype,sql);
/*
strsql="insert into tblpicture(id,titleid,num,picture,img,thumbnail) values(pictureid.nextval,"+titleid+","+fileSize+",'"+contenttype.trim()+"',empty_blob(),empty_blob())";//插入一条空图片数据进图片表
System.out.println(strsql);
db.executeUpdate(strsql);
System.out.println("-------生成缩略图---------------");
//------------生成缩略图------------------//
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);//绘制缩略图
System.out.println("-------绘制缩略图---------------");
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();
//------------缩略图生成完毕----------------//
//------------缩略图入库-------------------//
System.out.println("--------缩略图生成完毕-------");
java.io.InputStream tempinstream=new java.io.FileInputStream(tempfile);//将缩略图文件读到流中
System.out.println("--------将缩略图文件读到流中-------");
strsql="select thumbnail from tblpicture where titleid="+titleid+" and dbms_lob.getlength(thumbnail)=0 for update ";//选择图片表的缩略图字段更新
rs=db.executeQuery3(strsql);
System.out.println("------写缩略图数据进blob类型字段-----");
if (rs !=null && rs.next())//写缩略图数据进blob类型字段
{
System.out.println("缩略图入库!!!!!!");
oracle.sql.BLOB tempblob=((oracle.jdbc.OracleResultSet)rs).getBLOB("thumbnail");
System.out.println("aaaaaaaaaaaaaaaaaa!");
tempout = tempblob.getBinaryOutputStream();
byte[] tempbytes = new byte[(int) tempfile.length()];//创建缓冲区
tempinstream.read(tempbytes);
tempout.write(tempbytes);
tempout.flush();
db.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=db.executeQuery3(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();
db.commit();
if(outStream!=null)outStream.close();
}
*/
}
// if(inStream!=null)inStream.close();
//if(sfile!=null){if(sfile.delete())System.out.println("临时文件已删除");}//删除临时文件
}
}
System.out.println("文件上传完毕");
}
catch(Exception ex1)
{
System.out.println(ex1.toString());
}
分享到:
相关推荐
本文将详细介绍如何使用NBU来备份和恢复MySQL数据库。 NBU备份mysql的优势 使用NBU备份mysql数据库可以提供多种优势,例如: * 高效的备份和恢复:NBU可以快速地备份和恢复mysql数据库,无需停机或中断数据库的...
1. **移动到第10项备份**:使用控制面板上的导航键移动到第10个选项,即“备份”。 2. **按F4键选择备份**:选中备份选项后,按“F4”键进行下一步。 ##### 第五步:进入备份界面 1. **按Enter键确认**:确认进入...
本文将详细讲解如何使用"路由器备份config.bin文件密码查看器"来查看并找回宽带密码,以及涉及的相关技术知识。 首先,了解config.bin文件:这是一个二进制文件,通常由路由器制造商的固件生成,用于保存用户的网络...
1. **完整备份**:这是最基本的备份类型,包括所有选定的文件和数据,首次备份时通常使用这种方法。 2. **增量备份**:仅备份自上次备份以来更改的文件,这种方式节省存储空间,但恢复时需要逐个还原完整备份及所有...
一键备份还原系统是一款傻瓜式的系统备份和还原工具。它具有安全、快速、保密性强、压缩率高、兼容性好等特点,特别适合电脑新手和担心操作麻烦的人使用。
6. **恢复过程**:当需要恢复数据时,用户需要找到相应的备份文件,解压缩后,用备份工具或直接将文件复制回原始位置。 7. **最佳实践**:为了确保备份的完整性和有效性,应定期检查备份文件的可读性,并进行恢复...
这个压缩包文件包含了一个名为"CT212和213的备份工具.exe"的执行程序,下面我们将详细探讨其功能、使用方法以及在实际操作中的应用。 首先,CT_Tool 是一个专为CT212和CT213设计的备份工具,它能够帮助用户高效、...
- 考虑使用云服务提供商的自动备份功能,如AWS RDS、Google Cloud SQL等。 - 云备份可以结合本地备份,提供多层数据保护。 通过理解这些知识点,你可以利用"mysql备份类.class.rar"中的PHP类库创建高效、可靠的...
3. **自定义备份路径和文件名**:在RMAN命令中,可以使用`TO DISK`选项指定备份存储的位置,通过`SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO`命令可以设置备份文件的命名格式,例如包含日期、时间...
使用 mysqldump 命令可以备份 TestLink 数据库。例如,使用以下命令可以备份数据库: `mysqldump -uroot -p123456 bitnami_testlink > F:\mysql_bkup.sql` 这将将数据库备份到 `F:\mysql_bkup.sql` 文件中。 三、...
睿备份是一款专为个人和企业设计的数据保护工具,主要用于实现数据的安全备份与恢复。这款软件的版本号为4.2.5.0,是iNethink公司...使用睿备份,用户可以放心地面对可能出现的数据风险,确保业务的连续性和稳定性。
完全备份是备份所有数据,增量备份只备份自上次备份以来更改的数据,而差异备份则备份自上次完全备份以来更改的数据。 5. **脚本编写**:备份脚本通常包含多个步骤,如检查数据库状态、设置备份参数、执行RMAN命令...
高通机型备份字库:安装个MT管理器,使用root权限执行【高通字库备份.sh】即可。备份的文件在/sdcard/Rannki目录中。 高通机型还原字库:提前把之前备份好的Rannki文件夹,复制到/sdcard/Rannki,安装个MT管理器,...
3. **文件I/O操作**:如果备份形式是导出到文件(如CSV、XML或二进制格式),则需要使用TFileStream、TDataset等组件来处理文件读写。同时,可能还需要使用Zip或7-Zip库来压缩备份文件,以节省存储空间。 4. **任务...
2. **差异备份**:差异备份只备份自上次完整备份后发生变化的数据,它比完整备份更节省存储空间,但需要配合完整备份使用。 3. **日志备份**:对于事务密集型应用,频繁的日志备份可以确保在发生故障时能够精确地...
H3C交换机配置文件备份方法是指将交换机的配置文件备份到远程服务器或PC机上,以便在需要时恢复配置文件或升级交换机时使用。该方法主要有两种:TFTP方式和FTP方式。 一、使用TFTP方式 使用TFTP方式需要在PC机上...
文档中提到的使用快照进行备份是数据备份的一种方法。 2. IBM Rational DOORS的介绍:IBM Rational DOORS是IBM公司的产品,主要用于需求管理。它帮助工程师和管理人员捕获、链接、分析和管理项目的需求。 3. 快照...
用再生龙远程备份Linux.pdf
- **操作步骤**:将上述两个步骤中备份的数据文件存储在一个安全的位置,以便日后进行数据恢复时使用。 #### 二、数据还原 **1. 解压备份文件** - **文件要求**:解压后的文件应包括以下几项: - `tcdata`文件夹...
5. **使用说明**:`使用说明.txt`文件提供了脚本的使用指南,包括如何配置脚本参数(如数据库连接信息、备份保存路径、保留天数等),以及如何设置和管理Windows计划任务。 6. **安全性**:需要注意的是,由于脚本...