java实现将图片和缩略图存储到数据库中
jsp上传图片生成缩略图并将数据信息添加到数据库

jsp上传图片生成缩略图并将数据信息添加到数据库jsp上传图片生成缩略图并将数据信息添加到数据库2011-03-31 15:30转载自 sleinet最终编辑 sleinet上传页面:<form action="uppicsuolue.jsp" method="post" enctype="multipart/form-data" name="anliForm" id="anliForm"> <input type="hidden" name="comId" value="<%=comid%>"><table width="100%" border="0"><tr><td>发布者:</td><td><input name="comName" type="text" id="comName" readonly="readonly" value="<%=comName%>"/></td> </tr><tr><td>标题:</td><td><input name="anliTitle" type="text" id="anliTitle" /></td></tr><tr><td>作品类别:</td><td><select name="anliProType" id="anliProType"><SelectBean:SelectBean idNum="0" tName="list_itemproducttype"></SelectBean:SelectBean> </select></td></tr><tr><td>作品图片:</td><td><input name="file" type="file" size="30" /></td></tr><tr><td>内容</td><td><textarea name="anliContent" cols="60" rows="10"></textarea></td></tr><tr><td> </td><td><input type="submit" name="Submit" value="发布" /></td></tr></table></form>处理页面:<%@ page contentType="text/html;charset=gb2312" language="java"import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.imag e.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*,com.slei.util.*,com bean.*"%><%SmartUpload mySmartUpload =new SmartUpload();long file_size_max=1000000;String fileName2="",ext="",testvar="";String url="com/anlipic/"; //应保证在根目录中有此目录的存在mySmartUpload.initialize(pageContext); //初始化try {mySmartUpload.setAllowedFilesList("jpg,gif"); //只允许上载此类文件mySmartUpload.upload(); //上载文件} catch (Exception e){%><SCRIPT language=javascript>alert("只允许上传.jpg和.gif类型图片文件");window.location='item_anli.jsp';</script><%}try{com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);if (myFile.isMissing()){%><SCRIPT language=javascript>alert("请先选择要上传的文件");window.location='asdf.jsp';</script><%}else{//StringmyFileName=myFile.getFileName(); //取得上载的文件的文件名ext= myFile.getFileExt(); //取得后缀名int file_size=myFile.getSize(); //取得文件的大小String saveurl="";if(file_size<file_size_max){Calendar calendar = Calendar.getInstance();String filename = String.valueOf(calendar.getTimeInMillis()); //更改文件名,取得当前上传时间的毫秒数值saveurl=request.getRealPath("/")+url;saveurl+=filename+"."+ext; //保存路径System.out.println(saveurl);myFile.saveAs(saveurl,mySmartUpload.SAVE_PHYSICAL);//************************************************************* ****上传完成,开始生成缩略图java.io.File file = new java.io.File(saveurl); //读入刚才上传的文件Stringnewurl=request.getRealPath("/")+url+filename+"_min."+ext; //新的缩略图保存地址Image src = javax.imageio.ImageIO.read(file); //构造Image对象float tagsize=200;int old_w=src.getWidth(null); //得到源图宽int old_h=src.getHeight(null);int new_w=0;int new_h=0; //得到源图长int tempsize;float tempdouble;if(old_w>old_h){tempdouble=old_w/tagsize;}else{tempdouble=old_h/tagsize;}new_w=Math.round(old_w/tempdouble);new_h=Math.round(old_h/tempdouble); //计算新图长宽BufferedImage tag = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);//绘制缩小后的图FileOutputStream newimage=new FileOutputStream(newurl); //输出到文件流JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);encoder.encode(tag); //近JPEG编码newimage.close();//************************************************************* ******数据插入数据库Format format=new Format();ComBean cbean=new ComBean();String pic1=url+filename+ext;String pic2=url+filename+"_min."+ext;StringanliProType=mySmartUpload.getRequest().getParameter("anliPr oType");StringanliTitle=mySmartUpload.getRequest().getParameter("anliTitle");StringcomId=mySmartUpload.getRequest().getParameter("comId");StringcomName=mySmartUpload.getRequest().getParameter("comNa me");StringanliContent=mySmartUpload.getRequest().getParameter("anliC ontent");StringanliId=comId+String.valueOf(calendar.getTimeInMillis());String insertSql="insert into item_anli(anliId,comId,comName,anliTitle,anliProType,pic1,pic2,a nliContent,upTimes)values('"+anliId+"','"+comId+"','"+comNam e+"','"+anliTitle+"','"+anliProType+"','"+pic1+"','"+pic2+"','"+an liContent+"','"+format.getDateTime()+"')";boolean isInsert=cbean.updateslei(insertSql);if(isInsert){out.print("<SCRIPT language='javascript'>");out.print("alert('发布成功!');");out.print("window.location='item_anlictrl.jsp;'");out.print("</SCRIPT>");}else{out.print("<SCRIPT language='javascript'>");out.print("alert('系统遇忙,请稍后重试!');");out.print("window.location='item_anli.jsp;'");out.print("</SCRIPT>");}}else{out.print("<SCRIPT language='javascript'>");out.print("alert('上传文件大小不能超过"+(file_size_max/1000)+"K');");out.print("window.location='item_anli.jsp;'");out.print("</SCRIPT>");}}}catch (Exception e){e.toString();}%>。
如何将JPEG缩略图放到LISTVIEW中

LISTVIEW显示JPEG缩略图李海彬许多的JPEG图片浏览器(如由我设计的《JPEG浏览缩放器》),都可以将JPEG缩略图放置到Listview控件中,实现图片的预览。
要在Listview上显示图片,Listview控件必须与Imagelist控件关联,先将图片装入到IMAGELIST控件中,再通过这种方式以应:Listview1.Item[0].ImageIndex=3但是Imagelist控件仅支持BMP和ICO格式,而且装载进去的图片,必须强制转换成一个预定的大小,如32*32等,对于JPEG格式的图片来说,是不支持的,而通过重载Imagelist控件,使它支持JPEG格式,难度也比较大,所以最后我采用了这种方法:(1)在FROM1上放置一个Image控件,一个Imagelist控件,一个Listview控件。
(2)将Listview1控件与Imagelist1控件关联。
Listview1的LargeImages=ImageList1,Listview1.ViewStyle=vsIcon., Imagelist1的Height和Width都设为120,因为JPEG缩略图的大小通常是120*120的,对于不是这个比例的图片,JPEG缩略图会按比例调节。
(3)使用GDI+的功能,将JPEG缩略图绘制在Image1控件里,这样做之后,Image1里的图片相当于BMP格式的了,即将JPEG缩略图转换成BMP的小图片。
绘制JPEG缩略图代码如下://----------------------------------------------------------------------------------Uese GDIPUTIL,GDIPAPI,GDIPOBJ; //GDI+的DELPHI封装APIconst MAX=120; //缩略图的最大值procedure TForm1.showjpg(fnames:string);V AR Graphics : TGPGraphics;Image, Thumbnail: TGPImage;SZ:double;p:tgppen;i:single; //JPEG缩略图的宽高比W,H:integer; //计算JPEG缩略图的宽与高度beginTRYimage1.Picture :=nil;Image:=TGPImage.Create(fnames);//计算图片宽度和高度,大的=MAX(即120),另一个按比例调整if Image.GetWidth >Image.GetHeight thenbeginW:=MAX;i:=Image.GetWidth /W;i:=Image.getHeight /i;H:=ROUND(I);endELSEBEGINH:=MAX;I:=Image.getHeight /H;i:=Image.getWidth /i;W:=ROUND(I);END;//先绘制一个120*120的白色矩形p:=tgppen.Create(0,2);p.SetColor(makecolor(200,200,200));//-----取JPEG缩略图,绘制到Image1中-------Thumbnail := image.GetThumbnailImage(W, H, nil, nil);Graphics :=TGPGraphics.Create(image1.Canvas.Handle);image1.Canvas.Lock ;graphics.Clear(makecolor(255,255,255));Graphics.DrawImage(Thumbnail, (120-w) div 2, (120-h) div2,Thumbnail.GetWidth,Thumbnail.GetHeight);//给这个图片加个边框graphics.DrawRectangle(p,makerect(0,0,120,120));image1.Canvas.Unlock ;Image.Free;Thumbnail.Free;p.Free;Graphics.Free;except;Image.Free;Thumbnail.Free;p.Free;Graphics.Free;END;end;//------------------------------------------------------------------------------------- (4)将Image1的图片添加到ImageList控件中。
java根据图片路径下载图片并保存到本地目录

java根据图⽚路径下载图⽚并保存到本地⽬录内容import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import .URL;import .URLConnection;public class DownloadImage {/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception {// TODO Auto-generated method stubdownload("/1/3/B/1_li1325169021.jpg", "1_li1325169021.jpg","d:\\image\\");}public static void download(String urlString, String filename,String savePath) throws Exception {// 构造URLURL url = new URL(urlString);// 打开连接URLConnection con = url.openConnection();//设置请求超时为5scon.setConnectTimeout(5*1000);// 输⼊流InputStream is = con.getInputStream();// 1K的数据缓冲byte[] bs = new byte[1024];// 读取到的数据长度int len;// 输出的⽂件流File sf=new File(savePath);if(!sf.exists()){sf.mkdirs();} // 获取图⽚的扩展名String extensionName = filename.substring(stIndexOf(".") + 1);// 新的图⽚⽂件名 = 编号 +"."图⽚扩展名String newFileName = goods.getProductId()+ "." + extensionName;OutputStream os = new FileOutputStream(sf.getPath()+"\\"+filename);// 开始读取while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}// 完毕,关闭所有链接os.close();is.close();}}。
图片存储到 sql server (java 实现)并用 jsp 展示

第一种情况:java读取写入图片。
本想找点代码测试一下在SQL Server中存取图片的方法,结果狂搜之后才发现,不是基于在jsp中的应用,就是本身过程太复杂,今天,突然看到一篇java实现数据库图片存储的文章,学java好象也有一年了,学jdbc也很长时间了,可是这方面还没写过呢。
就参考了网上的几篇文章,写了一个下午。
终于写好了。
现在把代码贴出来。
以供大家参考。
代码绝对可以运行,在我的机器是运行的结果完全正确。
我的机器是jdk1.5+winxp+eclipsepackage cn;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class PhotoDemo {/*** @param args*/Connection conn=null;public PhotoDemo() {try {String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=master";Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");conn= DriverManager.getConnection(url,"sa","xiaoxin");}catch(SQLException e) {e.printStackTrace();}catch(ClassNotFoundException ce) {ce.printStackTrace();}}public void Insert() {try {String sql="insert into picture values(?,?)";PreparedStatement ps=conn.prepareStatement(sql);File f =new File("E:/PHOTO/baby/1.jpg");FileInputStream input= new FileInputStream(f);ps.setString(1,"cute");ps.setBinaryStream(2, input,(int)f.length());ps.executeUpdate();ps.close();input.close();}catch(SQLException e) {e.printStackTrace();}catch(IOException ie) {ie.printStackTrace();}}public void Read() {try {String sql="select picture from picture where name=?";PreparedStatement ps=conn.prepareStatement(sql);ps.setString(1, "cute");ResultSet rs=ps.executeQuery();byte [] b=new byte[10240*8];while(rs.next()) {InputStream in=rs.getBinaryStream("picture");in.read(b);File f=new File("D:/3.jpg");FileOutputStream out=new FileOutputStream(f);out.write(b, 0, b.length);out.close();}}catch(SQLException e) {e.printStackTrace();}catch(IOException ie) {ie.printStackTrace();}}public static void main(String[] args) {// TODO Auto-generated method stubPhotoDemo p=new PhotoDemo();p.Insert();p.Read();}}其实,很简单的。
图片如何存入数据库

图⽚如何存⼊数据库通常对⽤户上传的图⽚需要保存到数据库中。
解决⽅法⼀般有两种:⼀种是将图⽚保存的路径存储到数据库;另⼀种是将图⽚以⼆进制数据流的形式直接写⼊数据库字段中。
以下为具体⽅法: ⼀、保存图⽚的上传路径到数据库: string uppath="";//⽤于保存图⽚上传路径 //获取上传图⽚的⽂件名 string fileFullname = this.FileUpload1.FileName; //获取图⽚上传的时间,以时间作为图⽚的名字可以防⽌图⽚重名 string dataName = DateTime.Now.ToString("yyyyMMddhhmmss"); //获取图⽚的⽂件名(不含扩展名) string fileName = fileFullname.Substring(stIndexOf("\\") + 1); //获取 string type = fileFullname.Substring(stIndexOf(".") + 1); //判断是否为要求的格式 if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF") { //将图⽚上传到指定路径的⽂件夹 this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type); //将路径保存到变量,将该变量的值保存到数据库相应字段即可 uppath = "~/upload/" + dataName + "." + type; } ⼆、将图⽚以⼆进制数据流直接保存到数据库: 引⽤如下: using System.Drawing; using System.IO; using System.Data.SqlClient; 设计数据库时,表中相应的字段类型为iamge 保存: //图⽚路径 string strPath = this.FileUpload1.PostedFile.FileName.ToString (); //读取图⽚ FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] photo = br.ReadBytes((int)fs.Length); br.Close(); fs.Close(); //存⼊ SqlConnection myConn = new SqlConnection("Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123"); string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";//操作数据库语句根据需要修改 SqlCommand myComm = new SqlCommand(strComm, myConn); myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length); myComm.Parameters["@photoBinary"].Value = photo; myConn.Open(); if (myComm.ExecuteNonQuery() > 0) { bel1.Text = "ok"; } myConn.Close(); 读取: ...连接数据库字符串省略 mycon.Open(); SqlCommand command = new SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查询语句根据需要修改 byte[] image = (byte[])command.ExecuteScalar (); //指定从数据库读取出来的图⽚的保存路径及名字 string strPath = "~/Upload/zhangsan.JPG"; string strPhotoPath = Server.MapPath(strPath); //按上⾯的路径与名字保存图⽚⽂件 BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate)); bw.Write(image); bw.Close(); //显⽰图⽚ this.Image1.ImageUrl = strPath; 采⽤俩种⽅式可以根据实际需求灵活选择。
java 向数据库中保存图片

java 向数据库中保存图片2007-09-16 16:39Tips :本文中使用 jdk 6.0 + mysql 5.0贴出来好好享受~~~~Part1 : 保存图片到数据库中import java.io.*;import java.sql.*;public class PutImg {public void putimg(String filename) {try {Class.forName("com.mysql.jdbc.Driver").newInstance();Connectioncon=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydefault","root","skychen"); PreparedStatement pstmt = null;String sql = "";File file = new File(filename);InputStream photoStream = new FileInputStream(file);//sql = " UPDATE imgt SET img = ? ";sql = "INSERT INTO imgtable (id,img) VALUES (1,?)";//insert into images(PicNum,Content,Image) values(1,?,?)pstmt = con.prepareStatement(sql);pstmt.setBinaryStream(1,photoStream,(int)file.length());//需获取文件输出流及其大小pstmt.execute();pstmt.close();con.close();} catch (Exception e) {System.err.println("Error");e.printStackTrace();}}public static void main(String[] args){if (!args[0].equals(null)){PutImg pi=new PutImg();pi.putimg(args[0]);System.out.println("Upload file success");}else{System.out.println(args[0]);System.out.println("Warnning: Please type your wanted filename!");}}}Part2 : 保存图片到文件import java.io.*;import java.sql.*;class GetImg {private String URL = "jdbc:mysql://localhost:3306/mydefault?user=root&password=skychen"; private Connection conn = null;private PreparedStatement pstmt = null;private ResultSet rs = null;private File file = null;public void blobRead(String outfilename, int picID) throws Exception {FileOutputStream fos = null;InputStream is = null;byte[] Buffer = new byte[4096];try {Class.forName("com.mysql.jdbc.Driver").newInstance();conn = DriverManager.getConnection(URL);pstmt = conn.prepareStatement("select img from imgtable where id=?");pstmt.setInt(1, picID); // 传入要取的图片的IDrs = pstmt.executeQuery();rs.next();file = new File(outfilename);if (!file.exists()) {file.createNewFile(); // 如果文件不存在,则创建}fos = new FileOutputStream(file); //得到文件输出流is = rs.getBinaryStream("img"); //从数据库中得到文件二进制流int size = 0;while ((size = is.read(Buffer)) != -1) { //读到buffer 中缓存//System.out.println(size); //打印buffer大小fos.write(Buffer, 0, size); //写入到文件输出流中}} catch (Exception e) {System.out.println( e.getMessage());} finally {// 关闭用到的资源fos.close();rs.close();pstmt.close();conn.close();}}public static void main(String[] args) {if (!args[0].equals(null)){try {GetImg gi=new GetImg();gi.blobRead(args[0], 1);} catch (Exception e) {System.out.println("[Main func error: ]" + e.getMessage());}}else{System.out.println("Warnning: Please type your store path and filename!"); }}}类别:J2se | 添加到搜藏 | 浏览(440) | 评论 (1)上一篇:Cannot load JDBC driver class ...下一篇:SQL select 语句使用9则最近读者:登录后,您就出现在这里。
java向数据库存取图片

java向数据库存取图片.txt吃吧吃吧不是罪,再胖的人也有权利去增肥!苗条背后其实是憔悴,爱你的人不会在乎你的腰围!尝尝阔别已久美食的滋味,就算撑死也是一种美!减肥最可怕的不是饥饿,而是你明明不饿但总觉得非得吃点什么才踏实。
JAVA向数据库中存取图片的演示在网上看到很多贴子,问JAVA怎样才能将图片存入数据库,并从数据中显示出来。
是啊,我当年也问过这样的问题,也在网上找过,不过都没有一个完整的程序,一个很简单的程序,让我走了很多的弯路,后来写的东西多了,问题就迎刃而解了,现写了一个完整的程序并把源程序贴出来,希望对你了解JAVA这方面的功能有一点帮助。
由于没有写注解,如有什么不能理解的,可以发电子邮件给我(zhliuyou@),同时我也很乐意与喜欢JAVA的朋友们讨论JAVA方面问题:注:本程序的在WINXP+SQLserver2000+JDK1.5测试通过package org.liuyou.insertphotodemo;/*** <p>Title: InsertPhotoDemo</p>* <p>Description: 本程序用于演示向数据库中插入图片及从数据库中读取图片</p>* <p>Copyright: Copyright (c) 2005</p>* <p>Company: LIUYOU STUDIO</p>* @author liuyou(zhliuyou)* @version 1.0*/import java.io.*;import java.sql.*;import javax.swing.*;import java.awt.*;public class InsertPhotoDemo{public static void main(String args[]){JFrame f = new JFrame();JLabel label = new JLabel();try{/* 加载数据库驱动程序 */Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");/* 获取连接,这里用的SQLServer2000*/Connection con = DriverManager.getConnection("jdbc:microsoft:sqlserver://10.1.5.110:1433;Database Name=MiniTuiBaoRobot","zhliuyou","zhliuyou");/* 存入图片 */String sql="insert into TEST values(?,?)";PreparedStatement pstmt = con.prepareStatement(sql);File file = new File("e:/study/javafile/InsertPhotoDemo/test.jpg");System.out.println(file.length());FileInputStream fis = new FileInputStream(file);pstmt.setBinaryStream(1,fis,(int)file.length());pstmt.setString(2,"liuyou");pstmt.executeUpdate();pstmt.close();fis.close();/* 读取图片 */byte [] imageByte;String readSql = "select PHOTO from TEST where TESTID=?";PreparedStatement pstm = con.prepareStatement(readSql);pstm.setString(1,"1");ResultSet rs = pstm.executeQuery();if(rs.next()){imageByte = rs.getBytes(1);Image selectPhoto = Toolkit.getDefaultToolkit().createImage(imageByte); ImageIcon icon = new ImageIcon(selectPhoto);label.setIcon(icon);}pstm.close();rs.close();}catch(ClassNotFoundException ex){ex.printStackTrace();}catch(SQLException ex){ex.printStackTrace();}catch(FileNotFoundException ex){ex.printStackTrace();}catch(Exception ex){ex.printStackTrace();}Container contentPane = f.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(label,BorderLayout.CENTER);f.setTitle("JAVA向数据库中存取图片的演示");f.pack();f.show();}}import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.filechooser.*;import java.io.*;public class FileChooserExample {public static void main(final ng.String[] args) {java.awt.EventQueue.invokeLater(new ng.Runnable(){@Override public void run(){final JFrame frame = new JFrame("FileChooser Example");final DefaultListModel<File> model = new DefaultListModel<>(); final JList<File> list = new JList<>(model);final JToolBar toolbar = new JToolBar();final JFileChooser filechooser = new JFileChooser();filechooser.setMultiSelectionEnabled(true);filechooser.setFileFilter(new FileNameExtensionFilter("JPEG & GIF & PNG Images", "jpg", "jpeg", "gif", "png"));Action select = new AbstractAction("Select ..."){@Override public void actionPerformed(ActionEvent e) { if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(frame)){for(File file: filechooser.getSelectedFiles())model.addElement(file);}}};toolbar.add(select);frame.add(toolbar, BorderLayout.PAGE_START);frame.add(new JScrollPane(list));frame.pack();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}}。
java如何上传图片到数据库

《摘抄1》PostgreSQL 7.4 文档Prev Fast Backward Chapter 31. JDBC 接口 Fast Forward Next31.7. 存储二进制数据PostgreSQL 提供两种不同的方法存储二进制数据。
二进制数据可以使用二进制数据类型bytea存储在表中,或者使用大对象特性,该特性以一种特殊的格式将二进制数据存储在一个独立的表中,然后通过在你的表中保存一个指向该表的类型为 oid 的数值来引用它。
为了判断那种方法比较合适,你必须理解每种方法的局限。
bytea 数据类型并不适合存储非常大数量的二进制数据。
虽然类型为 bytea 的字段可以存储最多 1G 字节的二进制数据,但是这样它会要求数量巨大的内存来处理这样巨大的数值。
存储二进制的大对象的方法更适合存储非常大的数值,但也有自己的局限。
特别是删除一个包含大对象引用的行并未删除大对象。
删除大对象是一个需要执行的独立的操作。
大对象还有一些安全性的问题,因为任何联接到数据库的人都可以查看或者更改大对象,即使他们没有查看/更新包含大对象引用的行的权限也一样。
版本 7.2 是第一个支持 bytea 类型的 JDBC 驱动版本。
在 7.2 中引入的这个功能同时也引入了一个和以往的版本不同的行为。
自 7.2 以来,方法 getBytes(), setBytes(),getBinaryStream() 和 setBinaryStream() 操作 bytea 类型。
在 7.1 和更早的版本里这些方法操作和 OID 类型关联的大对象。
我们可以通过在 Connection 上设置 compatible 属性为数值 7.1 来获取旧的 7.1 的行为。
要使用 bytea 数据类型你只需要使用 getBytes(),setBytes(), getBinaryStream(),或者 setBinaryStream() 方法。
要使用大对象的功能,你可以使用 PostgreSQL JDBC 驱动提供的 LargeObject 类,或者使用 getBLOB() 和 setBLOB() 方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public class PicCreateCtrl extends HttpServlet{
public PicCreateCtrl(){
super();
}
public void destroy(){
super.destroy();//Just puts"destroy"string in log
//Put your code here
}
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();
SmartUpload mySmartUpload=new SmartUpload();//creat new SmartUpload object long file_size_max=10000000;//the bigest size of file
String fileExt="";
String url="temp/";//the path of save upload file
mySmartUpload.initialize(this.getServletConfig(),request,response);
try{
mySmartUpload.setAllowedFilesList("png,emf,bmp,jpg,gif,BMP,JPG,GIF,PN G,EMF");
//上载文件
mySmartUpload.upload();
}catch(Exception e){
e.printStackTrace();
out.print("<script language=javascript>");
out.println("alert('只允许上传.png,.emf,.bmp,.jpg,.gif类型的图片文件!');");
out.println("window.location='javascript:history.go(-1)'");
out.print("</script>");
}
try{
BaseduManager manager=new BaseduManager();
File myFile=mySmartUpload.getFiles().getFile(0);
String xh=mySmartUpload.getRequest().getParameter("xcxh");
if(myFile.isMissing()){
out.print("<script language=javascript>");
out.println("alert('请先选择你要上传的图片!');");
out.println("window.location='javascript:history.go(-1)'");
out.print("</script>");
}else{
fileExt=myFile.getFileExt();//取得文件后缀名
int file_size=myFile.getSize();//取得文件的大小
String fileurl="";
if(file_size<file_size_max){
//更改文件名,取得当前上传时间的毫秒数值
String rname=Tools.getSystime().substring(0,8);
String filename=myFile.getFileName();
rname=rname+"_"+filename.substring(0,filename.length()-4);
fileurl+=request.getRealPath("/")+url+rname+"."+fileExt;//图片上传后的路径
java.io.File zp=new java.io.File(fileurl);//读入刚才上传的文件
String newurl=request.getRealPath("/")+url+"/"+rname+"_min."+ fileExt;//新的缩略图保存地址
myFile.saveAs(fileurl,mySmartUpload.SAVE_PHYSICAL);
Image src=javax.imageio.ImageIO.read(zp);//构造Image对象
int new_w=320;
int new_h=200;//得到源图长
BufferedImage tag=new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);//绘制缩小后的图
FileOutputStream newimage=new FileOutputStream(newurl);//输出到文件流
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag);//近JPEG编码
newimage.close();
java.io.File sltp=new java.io.File(newurl);//读入刚才上传的文件
manager.saveEduPic(zp,sltp,xh);//把照片和缩略图存到数据库中
out.print("<script language=javascript>");
out.print("alert('图片保存成功!');");
out.print("window.location='javascript:history.go(-1)';");
out.print("</SCRIPT>");
}else{
out.print("<script language=javascript>");
out.print("alert('上传文件大小不能超过"+(file_size_max/1000000)+"M');");
out.println("window.location='javascript:history.go(-1)';");
out.print("</SCRIPT>");
}
}
out.close();
out.flush();
}catch(Exception e){
e.printStackTrace();
}
}
public void init()throws ServletException{ }
}。