int w = Integer.parseInt(request.getParameter("width"));  
   int h = Integer.parseInt(request.getParameter("height"));   
    OutputStream output = new FileOutputStream(new File("/home/"+new Date()+".jpg"));  
    BufferedImage img = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB);  
    ...................
    IIOImage iioImage = new IIOImage(img, null, null);  
    ImageWriteParam param = writer.getDefaultWriteParam();  
    param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);  
    param.setCompressionQuality(1.0f);
    //输出到文件夹
    ImageOutputStream outputStream = ImageIO.createImageOutputStream(output);  
    writer.setOutput(outputStream);  
    writer.write(null, iioImage, param);  //写入图片上面把图片存入了文件夹里,但是如何把生成的图片存入数据库呢

解决方案 »

  1.   

    假如数据库中有一个字段image是blob类型,保存图片。
    InputStream input = new FileInputStream(new File("/home/"+new Date()+".jpg"));  
    String sql = "insert into mytable(image) values(?)";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setBinaryStream(1,input,input.available());
    ps.executeUpdate();
      

  2.   

    但是我用的是OutputStream那怎么写入数据库呢
      

  3.   

    给分吧:用clob , blob在mysql中建表 , 并使用jdbc操作clob  对应四种类型 ,TINYTEXT ,    TEXT ,      MEDIUMTEXT , LONGTEXT
                                 2的8次方     2的16次方      2的24次方          2的32次方
    blob 对应四种类型  .  TINYBLOB ,     BLOB ,    MEDIUMBLOB , LONGBLOB
     
     
    clob
    create table testclob(id integer primary key auto_increment , content text);
     
     
    blob
    create tabke testblob(id integer primary key auto_increment , image blog);
     
     
    Java代码 
    package com.zly.test;  
      
    import java.io.BufferedInputStream;  
    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileOutputStream;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.OutputStream;  
    import java.io.UnsupportedEncodingException;  
    import java.sql.Connection;  
    import java.sql.DriverManager;  
    import java.sql.PreparedStatement;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
      
    public class Test {  
          
        public static void main2(String[] args) {  
            Connection connection = null;  
            PreparedStatement psmt = null;  
            BufferedInputStream bis = null;  
            try {  
                Class.forName("com.mysql.jdbc.Driver");  
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc" , "root" , "root");  
                String sql = "insert into testjdbc(pic) values(?)";  
                psmt = connection.prepareStatement(sql);  
                File file = new File("src/tab.png");  
                bis = new BufferedInputStream(new FileInputStream(file));  
                psmt.setBinaryStream(1, bis, new Long(file.length()).intValue());  
                int executeUpdate = psmt.executeUpdate();  
                System.out.println(executeUpdate);  
            } catch (ClassNotFoundException e) {  
                e.printStackTrace();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            } finally {  
                if(bis != null) {  
                    try {  
                        bis.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(psmt != null) {  
                    try {  
                        psmt.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(connection != null) {  
                    try {  
                        connection.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
          
        public static void main1(String[] args) {  
            Connection connection = null;  
            PreparedStatement psmt = null;  
            ResultSet rs = null;  
            try {  
                Class.forName("com.mysql.jdbc.Driver");  
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc" , "root" , "root");  
                String sql = "select content from testjdbc where id = ?";  
                psmt = connection.prepareStatement(sql);  
                psmt.setInt(1, 1);  
                rs = psmt.executeQuery();  
                if(rs.next()) {  
                    String string = rs.getString("content");  
                    System.out.println(new String(string.getBytes() , "UTF-8"));  
                }  
            } catch (ClassNotFoundException e) {  
                e.printStackTrace();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            } catch (UnsupportedEncodingException e) {  
                e.printStackTrace();  
            } finally {  
                if(psmt != null) {  
                    try {  
                        psmt.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(connection != null) {  
                    try {  
                        connection.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
          
        public static void main(String[] args) {  
            InputStream binaryStream = null;  
            OutputStream out = null;  
            Connection connection = null;  
            PreparedStatement prepareStatement = null;  
            ResultSet executeQuery = null;  
            try {  
                Class.forName("com.mysql.jdbc.Driver");  
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "root");  
                String sql = "select pic from testjdbc where id = ?";  
                prepareStatement = connection.prepareStatement(sql);  
                prepareStatement.setInt(1, 1);  
                executeQuery = prepareStatement.executeQuery();  
                if(executeQuery.next()) {  
                    binaryStream = executeQuery.getBinaryStream("pic");  
                    out = new FileOutputStream("src/tab_bak.png");  
                    byte[] bytes = new byte[1024];  
                    int read = 0;  
                    while((read = binaryStream.read(bytes)) != -1) {  
                        out.write(bytes , 0 , read);  
                    }  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {  
                if(binaryStream != null) {  
                    try {  
                        binaryStream.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(out != null) {  
                    try {  
                        out.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(executeQuery != null) {  
                    try {  
                        executeQuery.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(prepareStatement != null) {  
                    try {  
                        prepareStatement.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if(connection != null) {  
                    try {  
                        connection.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
          
    }