データベース(mysql)からピクチャにアクセス
キーワード:mysql jspピクチャアクセス
JSPを活用するためには、さまざまなファイルをデータベースに保存し、必要に応じてクライアントに表示する必要があります.これらのファイルには音楽、画像、テキストなどが含まれており、総称してバイナリファイルと呼ばれています.
まず、バイナリファイルをデータベースに格納するプロセス:ファイルを開き、内容をバッファに読み込み、jdbc文オブジェクトを直接接続して作成し、このバッファのデータを使用して更新を実行すると、格納が完了します.
例:
まずmysqlでテーブルpicture_を作成します.db
次にjavaでファイルを格納するコードを書きます.
保存するピクチャ名を01.jpg(同じディレクトリの下に置く)とします.
実行に成功すると、「true」と「false」が印刷されます.
最後に、画像度を取り出します.保存の過程とは逆に、県が接続を確立し、データベースクエリーのjdbcオブジェクトを作成し、この文を使用してバイナリ結果を返し、ファイルに保存します.
showImage.jsp
実行時
http://localhost:8080:アプリケーションディレクトリ/showImage.jsp
自分がアップロードした写真を見ることができます.
転載:北天JAVA技術ネット(www.java114.com)
JSPを活用するためには、さまざまなファイルをデータベースに保存し、必要に応じてクライアントに表示する必要があります.これらのファイルには音楽、画像、テキストなどが含まれており、総称してバイナリファイルと呼ばれています.
まず、バイナリファイルをデータベースに格納するプロセス:ファイルを開き、内容をバッファに読み込み、jdbc文オブジェクトを直接接続して作成し、このバッファのデータを使用して更新を実行すると、格納が完了します.
例:
まずmysqlでテーブルpicture_を作成します.db
create table picture_db(
file_name varchar(255) not null,
content longblob,
primary key (file_name));
次にjavaでファイルを格納するコードを書きます.
保存するピクチャ名を01.jpg(同じディレクトリの下に置く)とします.
import java.sql.*;
import java.io.*;
import java.nio.*;
public class UploadImage {
protected Connection dbConnection;
protected String driverName = "com.mysql.jdbc.Driver";
protected String dbURL = "jdbc:mysql://localhost:3306/sample_db";
protected String userID = "root";
protected String passwd = "yourpassword";
public boolean storeImage(String sqlstr,File file){
try{
FileInputStream fin = new FileInputStream(file);
ByteBuffer nbf = ByteBuffer.allocate((int)file.length());
byte[] array = new byte[1024];
int offset =0,length=0;
while((length=fin.read(array))>0){
if(length!=1024)
nbf.put(array,0,length);
else
nbf.put(array);
offset+=length;
}
fin.close();
byte[] content = nbf.array();
return setImage(sqlstr,content);
}catch(FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return false;
}
private boolean setImage(String sqlstr,byte[]in){
boolean flag = false;
if(sqlstr==null)
sqlstr="select * from picture_db";
try{
Class.forName(driverName);
dbConnection = DriverManager.getConnection(dbURL,userID,passwd);
Statement stmt = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery(sqlstr);
if(rs.next()){
rs.updateBytes(2,in);
rs.updateRow();
}
else{
rs.moveToInsertRow();
rs.updateString(1,"01");
rs.updateBytes(2,in);
rs.insertRow();
}
rs.close();
flag=true;
}catch(Exception e){
e.printStackTrace();
}
return flag;
}
public static void main(String[] args){
UploadImage upload = new UploadImage();
try{
File file = new File("01.jpg");
if(upload.storeImage(null, file))
System.out.print("ture");
else
System.out.print("False");
}catch(Exception e){
e.printStackTrace();
}
}
}
実行に成功すると、「true」と「false」が印刷されます.
最後に、画像度を取り出します.保存の過程とは逆に、県が接続を確立し、データベースクエリーのjdbcオブジェクトを作成し、この文を使用してバイナリ結果を返し、ファイルに保存します.
showImage.jsp
<%@ page contentType = "image/jpeg;charset=GB2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="com.sun.image.codec.jpeg.*"%>
<%@ page import="javax.imageio.*"%>
<%@ page import="java.awt.image.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="image/jpeg;charset=GB2312">
<title>showDBImage</title>
</head>
<body>
<%
String showImage ="select * from picture_db where file_name ='01'";
Connection conn = null;
BufferedInputStream inputImage = null;
String driverName = "com.mysql.jdbc.Driver";
String dbURL = "jdbc:mysql://localhost:3306/sample_db";
String userID = "root";
String passwd = "yourpassword";
try{
Class.forName(driverName).newInstance();
conn = DriverManager.getConnection(dbURL,userID,passwd);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(showImage);
while(rs.next()){
Blob blob = (Blob)rs.getBlob("content");
inputImage = new BufferedInputStream(blob.getBinaryStream());
}
BufferedImage image = null;
image = ImageIO.read(inputImage);
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
inputImage.close();
}catch(SQLException e)
{
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
%>
</body>
</html>
実行時
http://localhost:8080:アプリケーションディレクトリ/showImage.jsp
自分がアップロードした写真を見ることができます.
転載:北天JAVA技術ネット(www.java114.com)