2012-05-05 6 views
0

を取得私は、JSP &サーブレット店のイメージとそれに

でウェブサイトを作成していると私は聞いてみたい:

をデータベース(MySQLの)で画像を保存し、それを取得するための最良の方法は何

をプロファイルの画像として使用する

どうすればいいですか?

ありがとうございます。

答えて

3

二つの一般的な解決策:ディスク上の

  • バイトのフィールドで、データベースの直接

  • 、データベースに格納されているパスと(私はpersonnaly名としてのSHA1を使用したいですファイルには、私はパスがあることで、2回同じファイルを持つことはできません/ B/CDEF SHA1が

どちらのソリューションは非常にうまく機能する)ABCDEFである場合。最初のソリューションでは、バックアップするファイルとロールバックを有効にするなど、1つのファイルしか持たないという利点があります。ディスクファイルシステムがファイルを保存するようになるにつれて、より自然なものになるかもしれません。

+0

を使用してデータベースから画像を取得しますか? – baraaalsafty

+0

イメージ(Google "アップロードサーブレット")を受信し、ファイルコンテンツ(Google MessageDigest SHA1 java)のSHA1を見つけ、このSHA1からローカルパスを推測し、ディスクにファイルを保存し、ローカルパスを保存する必要がありますあなたのデータベース。 –

2

イメージをサーバー上のフォルダに保存します。 イメージパスをdbに保存します。表示時の は、dbからイメージパスを取得し、イメージを取得します。

+0

どうすれば実装できますか? – baraaalsafty

1

データベースに画像を保存します。

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

関連する問題