Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在mysql中存储图像并检索它_Java_Mysql_Image_Jsp_Servlets - Fatal编程技术网

Java 在mysql中存储图像并检索它

Java 在mysql中存储图像并检索它,java,mysql,image,jsp,servlets,Java,Mysql,Image,Jsp,Servlets,我正在用jsp和servlet创建一个网站 我想问: 在数据库(mysql)中存储并检索图像的最佳方法是什么 将其用作个人资料的图片 我该怎么做 提前感谢大家。两种常见的解决方案: 直接在数据库中的字节字段中 在磁盘上,路径存储在数据库中(我个人喜欢使用文件的SHA1作为名称,因此我不能有两个相同的文件,如果SHA1是abcdef,则路径为a/b/cdef) 这两种解决方案都非常有效。第一个解决方案的优点是只备份一个文件,支持回滚,等等。第二种可能更自然,因为磁盘文件系统用于存储文件。两种常

我正在用jsp和servlet创建一个网站

我想问:

在数据库(mysql)中存储并检索图像的最佳方法是什么

将其用作个人资料的图片

我该怎么做

提前感谢大家。

两种常见的解决方案:

  • 直接在数据库中的字节字段中

  • 在磁盘上,路径存储在数据库中(我个人喜欢使用文件的SHA1作为名称,因此我不能有两个相同的文件,如果SHA1是abcdef,则路径为a/b/cdef)

这两种解决方案都非常有效。第一个解决方案的优点是只备份一个文件,支持回滚,等等。第二种可能更自然,因为磁盘文件系统用于存储文件。

两种常见的解决方案:

  • 直接在数据库中的字节字段中

  • 在磁盘上,路径存储在数据库中(我个人喜欢使用文件的SHA1作为名称,因此我不能有两个相同的文件,如果SHA1是abcdef,则路径为a/b/cdef)


这两种解决方案都非常有效。第一个解决方案的优点是只备份一个文件,支持回滚,等等。第二种可能更自然,因为磁盘文件系统用于存储文件。

将图像保存在服务器上的文件夹中。 将图像路径保存在数据库中。
显示时,从数据库获取图像路径并检索图像。

将图像保存在服务器上的文件夹中。 将图像路径保存在数据库中。
显示时,从数据库获取图像路径并检索图像。

将图像存储在数据库中

    import java.sql.*;
    import java.io.*;

    public class insertImage{
     public static void main(String[] args) {
      System.out.println("Insert Image Example!");
      String driverName = "com.mysql.jdbc.Driver";
      String url = "jdbc:mysql://localhost:3306/";;
      String dbName = "databasename";
      String userName = "root";
      String password = "root";
      Connection con = null;

      try{
       Class.forName(driverName);
       con = DriverManager.getConnection(url+dbName,userName,password);
       Statement st = con.createStatement();
       File imgfile = new File("images.jpg");
       FileInputStream fin = new FileInputStream(imgfile);
       PreparedStatement pre = con.prepareStatement("insert into Tablename values(?)");
       pre.setBinaryStream(3,fin,(int)imgfile.length());
       pre.executeUpdate();
       System.out.println("Inserting Successfully!");
       pre.close();
       con.close(); 
     }
     catch (Exception e){
      System.out.println(e.getMessage());
     }
    }
   }
使用Servlet从数据库检索图像
将图像存储在数据库中

    import java.sql.*;
    import java.io.*;

    public class insertImage{
     public static void main(String[] args) {
      System.out.println("Insert Image Example!");
      String driverName = "com.mysql.jdbc.Driver";
      String url = "jdbc:mysql://localhost:3306/";;
      String dbName = "databasename";
      String userName = "root";
      String password = "root";
      Connection con = null;

      try{
       Class.forName(driverName);
       con = DriverManager.getConnection(url+dbName,userName,password);
       Statement st = con.createStatement();
       File imgfile = new File("images.jpg");
       FileInputStream fin = new FileInputStream(imgfile);
       PreparedStatement pre = con.prepareStatement("insert into Tablename values(?)");
       pre.setBinaryStream(3,fin,(int)imgfile.length());
       pre.executeUpdate();
       System.out.println("Inserting Successfully!");
       pre.close();
       con.close(); 
     }
     catch (Exception e){
      System.out.println(e.getMessage());
     }
    }
   }
使用Servlet从数据库检索图像

我如何实现第二个解决方案?您必须接收图像(谷歌“上传servlet”),找到文件内容的SHA1(谷歌“MessageDigest SHA1 java”),从该SHA1推导出本地路径,将文件存储在磁盘上,将本地路径存储在数据库上。我如何实现第二个解决方案?您必须接收图像(谷歌)“upload servlet”),找到文件内容的SHA1(google“MessageDigest SHA1 java”),从该SHA1推断出本地路径,将文件存储在磁盘上,将本地路径存储在数据库上。