jsp&servletでウェブサイトを作成しています
そして私は尋ねたい:
データベース(mysql)に画像を保存して取得するための最良の方法は何ですか
プロフィールの写真として使用する
そして、どうすればそれを行うことができますか?
よろしくお願いします。
2つの一般的な解決策:
データベースのバイトフィールドに直接
ディスク上で、パスがデータベースに保存されています(私は個人的に、ファイルのSHA1を名前として使用するのが好きなので、同じファイルを2回持つことはできません。SHA1がabcdefの場合、パスはa / b / cdefです)
どちらのソリューションも非常にうまく機能します。最初のソリューションには、バックアップするファイルが1つしかない、ロールバックを有効にするなどの利点があります。2つ目は、ディスクファイルシステムがファイルを保存するように作成されているため、より自然な場合があります。
サーバー上のフォルダに画像を保存します。イメージパスをdbに保存します。表示時にdbから画像パスを取得し、画像を取得します。
画像をデータベースに保存します。
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());
}
}
}
サーブレットhttp://www.roseindia.net/servlets/retreiveimage.shtmlを使用してデータベースから画像を取得し ます