最近开始进入java,上手就碰到这个问题,在csdn上研究了两天终于全部调试成功,现在帖出来希望对象我一样的新手有点帮助
图片存入数据库:
package processmanage;
import java.sql.*;
import java.io.*;
class savefile
{
public static void
main(String[] args)
{
try
{
Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver ");
Connection conn
= DriverManager.getConnection(
"jdbc:microsoft:sqlserver://JAYQIAN:1433;DataBaseName=CMM;User=jay;Password=jay
");
File
file = new
File( "E:\\test.jpg ");
int length
= (int) file.length();
InputStream
input = new FileInputStream(file);
java.sql.PreparedStatement
preStmt = conn.prepareStatement(
"INSERT INTO mytest (myname,myfile)
VALUES(?,?) ");
preStmt.setString(1,
"qianwy1 ");
preStmt.setBinaryStream(2,
input, length);
preStmt.execute();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
这是最简单的将一个服务器上的图片存入数据库,如果您调试这个class可以成功的话,修改放到jsp里也没什么问题.但是如果是客户端的话先要上传文件到服务器,然后
在存到数据库中,上传文件smartupload我就不说了
显示图片的servlet
package processmanage;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class getphoto
extends HttpServlet
{
private static final
String CONTENT_TYPE
= "image/jpeg
";
public void init()
throws ServletException
{
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,
IOException {
//在数据库中照片的ID
String PHOTOID =
null;
try {
PHOTOID = request.getParameter( "photoid ");
}
catch(Exception e) {
e.printStackTrace();
}
ResultSet RS_photo =
null;
try
{
Class.forName(
"com.microsoft.jdbc.sqlserver.SQLServerDriver ");
Connection conn =
DriverManager.getConnection(
"jdbc:microsoft:sqlserver://yangxf:1433;DataBaseName=CMM;User=sa;Password=
");
String sQuery =
"SELECT photo
FROM employee
WHERE id=?
";
PreparedStatement pstmt=null;
pstmt = conn.prepareStatement(sQuery);
pstmt.setString(1, PHOTOID);
RS_photo = pstmt.executeQuery();
}catch (Exception e){
//throw e;
}
//用来存储照片数据的缓冲区
byte [] buf=null;
//扩展名可以从数据库得到,这里直接指定为JPEG
String photoname= "jpeg ";
try{
//根据ID查找照片
//将图片数据读入缓冲区
if (RS_photo.next()){
buf = RS_photo.getBytes(1);
}else
{
buf = new
byte[0];
}
}catch (Exception e){
//throw e;
}
//finally {
//connMgr.freeConnection(
"comdb ", conn);
//}
//response.setContentType(CONTENT_TYPE);
//告诉浏览器输出的是图片
response.setContentType( "image/
"+photoname);
//图片输出的输出流
OutputStream out =
response.getOutputStream();
//将缓冲区的输入输出到页面
out.write(buf);
//输入完毕,清楚缓冲
out.flush();
}
public void destroy()
{
}
}
根据photoid显示相应的图片,您可以直接servlet/getphoto?photoid=XXX测试是否能用
放到jsp里显示图片
以上都是最简单的代码,调试成功后再慢慢合成到您的系统中.