Java 如何使用jsp/Servlet插入和检索图像数据库?

Java 如何使用jsp/Servlet插入和检索图像数据库?,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我有一个表单页面index.jsp: <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <style>

我有一个表单页面index.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<style>
fieldset
{
      width: 70px;
}
</style>
</head>
<body>
<form action="Upload" method="post" enctype="multipart/form-data">
<fieldset>
<table>
<tr>
<td>Name</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>Select Photo</td>
<td><input type="file" name="photo"></td>
</tr>
<td><input type="submit" value="Upload"></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
我正在使用mysql数据库,这是我的表:

create table PhotoDetails
(
Name varchar(100),
Images blob
) 
填写完所有表单后,当我单击“更新”按钮时,出现以下错误:

HTTP状态500-Servlet执行引发异常


如何解决此问题?

这是在jsp文件中显示图像的最佳方式

只需创建showLogo.jsp 包括你想要的任何地方

<%@ page trimDirectiveWhitespaces="true" %>
<%@ page import="java.sql.*,java.io.*,org.apache.struts2.ServletActionContext"%>
<%@ page language="java" import="java.util.*, com.abc.util.dbutil.*,javax.servlet.http.HttpServletRequest" %>
<%

try{
    InputStream sImage;
    ResultSet resultSet = null;
    PreparedStatement pstmt = null;

    DBConnection dbConnection= null;
    dbConnection= new DBConnection();
    Connection con = null;
    con= dbConnection.getConnection();

    ServletInputStream sInIm = null;

      Statement st=con.createStatement();
      String company_id = request.getParameter("company_id");    

      resultSet=st.executeQuery("select logo from company where company_id='" + company_id + "'");

      if(resultSet.next()){
      byte[] bytearray = new byte[1048576];
      int size=0;
      sImage = resultSet.getBinaryStream(1);    
      response.reset();
      response.setContentType("image/jpeg");
      while((size=sImage.read(bytearray))!= -1){
        response.getOutputStream().write(bytearray,0,size);
      }
      response.getOutputStream().flush();
      response.getOutputStream().close();
}
 con.close();
}     
catch(Exception ex){

}
%>
插入表格(徽标)值(?)


这是针对带有blob列的mysql。

500是一个内部服务器错误。因此,您必须查看服务器日志文件以了解发生了什么不确定您的问题是什么。您可以查看此链接:先生,在将图像插入数据库时,我的代码中是否有任何错误?或者你有相同的解决方案吗?Ravi Thapa先生,我也能知道图像的插入过程吗?我的意思是“将图像插入数据库的代码”,并显示您的表格。
<%@ page trimDirectiveWhitespaces="true" %>
<%@ page import="java.sql.*,java.io.*,org.apache.struts2.ServletActionContext"%>
<%@ page language="java" import="java.util.*, com.abc.util.dbutil.*,javax.servlet.http.HttpServletRequest" %>
<%

try{
    InputStream sImage;
    ResultSet resultSet = null;
    PreparedStatement pstmt = null;

    DBConnection dbConnection= null;
    dbConnection= new DBConnection();
    Connection con = null;
    con= dbConnection.getConnection();

    ServletInputStream sInIm = null;

      Statement st=con.createStatement();
      String company_id = request.getParameter("company_id");    

      resultSet=st.executeQuery("select logo from company where company_id='" + company_id + "'");

      if(resultSet.next()){
      byte[] bytearray = new byte[1048576];
      int size=0;
      sImage = resultSet.getBinaryStream(1);    
      response.reset();
      response.setContentType("image/jpeg");
      while((size=sImage.read(bytearray))!= -1){
        response.getOutputStream().write(bytearray,0,size);
      }
      response.getOutputStream().flush();
      response.getOutputStream().close();
}
 con.close();
}     
catch(Exception ex){

}
%>
FileInputStream fs = null;
        try {
            fs = new FileInputStream(getUserImage());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


.................


ps.setBinaryStream(8, fs, fs.available());