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