关于在java web开发中把图片存取怎么做呀??????

解决方案 »

  1.   

    一般在数据库都存储的是Image的路径和名称
      

  2.   

    数据库MYSQL:
    把图片存入数据库
    /*
    ---------------表结构------------
    表名:student2+--------+-------------+------+-----+---------+-------+
    | Field  | Type        | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | id     | int(4)      | NO   | PRI | NULL    |       |
    | name   | varchar(20) | YES  |     | NULL    |       |
    | stupic | blob        | YES  |     | NULL    |       |
    +--------+-------------+------+-----+---------+-------+*/import java.io.*;
    import java.sql.*;
    public class StoreBLOB {
    public static void main(String[] args) {
    //连接MySQl数据库
    Connection con=DBManager.getConnection();
    PreparedStatement ps=null;
    InputStream in=null; 
    try {
    //从本地硬盘读取一张读片
    in=new FileInputStream("d:/111.jpg");
    ps=con.prepareStatement("insert into student2 values(?,?,?)");
    ps.setInt(1,2);
    ps.setString(2, "Tom");
    ps.setBinaryStream(3, in, in.available());
    ps.executeUpdate();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    finally
    {
    try {
    //关闭流
    if(in!=null) in.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    //关闭相关连接
    DBManager.close(ps, con);

    }

    }
    }把图片从数据库中取出:
    import java.sql.*;
    import java.io.*;
    public class GetBLOB {
    public static void main(String[] args) {
    Connection con=DBManager.getConnection();
    Statement st=null;
    ResultSet rs=null;
    InputStream in=null;
    OutputStream out=null; try {
    st=con.createStatement();
    rs=st.executeQuery("select stupic from student2 where id=2");
    rs.next(); //将光标指向第一行
    //从rs中读取stupic放进InputStream对象中
    in=rs.getBinaryStream("stupic");
    //申明byte数组,用来存放图片流
    byte[] b=new byte[40000];
    in.read(b); //从InputStream对象中读取数据放进byte数组中
    //实例化OutputStream对象,在D盘创建一个图片文件
    out=new FileOutputStream("d:/222.jpg");
    //将文件输出,内容则为byte数组里面的数据
    out.write(b);
    out.flush(); } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    finally
    {
    try {
    if(in!=null)
    in.close();
    if(out!=null)
    out.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    DBManager.close(rs, st, con);//关闭相关连接
    }
    }
    }