来自MySQL的图像上的问号

时间:2014-02-17 10:29:45

标签: mysql database image servlets

我有一个MySQL数据库,我有以下列: firtname 姓氏灯泡

我有一个servlet和一个表单,可以将图片上传到我的MySQL数据库,这是成功的。当我从我的数据库下载图片时,它会得到正确的图片。我现在想在浏览器中显示图片,因此我尝试制作一个表单和一个servlet。当我要求图片时,我只是得到一个问号。有谁知道为什么会这样?

最诚挚的问候 MADS

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Get Image</title>
</head>
<body>
    <p>Here you can see the image</p>

    <img src="ImageServlet">

</body>
</html>


import java.sql.*;
import java.io.*;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;


@WebServlet(urlPatterns = {"/ImageServlet"})

public class ImageServlet extends  HttpServlet{

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse 
      response) throws ServletException, IOException{
      //PrintWriter pw = response.getWriter();


        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        response.setContentType("image/jpg");

      try{  
          Class.forName("com.mysql.jdbc.Driver").newInstance();
          connection = DriverManager.getConnection(connectionURL,"root","");  
          Statement st1 = connection.createStatement();


              ResultSet rs1 = st1.executeQuery
              ("SELECT image FROM photo WHERE lastname='test'");

              if(rs1.next()){
                  InputStream is = rs1.getBinaryStream("photo");
                  byte[] b = new byte[10240];
                  int n;
                    while((n = is.read(b)) >= 0) {
                        response.getOutputStream().write(b, 0, n);
                        System.out.println(n);
                }
                    is.close();

                st1.close();

                }
          }
          catch (Exception e){
          e.printStackTrace();
          }
      }
    }

1 个答案:

答案 0 :(得分:0)

这是正确的代码:

package jsp;

import java.sql.*;
import java.io.*;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;


@WebServlet(urlPatterns = {"/ImageServlet"})

public class ImageServlet extends  HttpServlet{

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse 
      response) throws ServletException, IOException{
      //PrintWriter pw = response.getWriter();


        String connectionURL = "jdbc:mysql://localhost/dblogin";
        Connection connection = null;
        response.setContentType("image/jpg");

      try{  
          Class.forName("com.mysql.jdbc.Driver").newInstance();
          connection = DriverManager.getConnection(connectionURL,"root","");  
          Statement st1 = connection.createStatement();


              ResultSet rs1 = st1.executeQuery
              ("SELECT photo FROM login WHERE lastname='test'");

              if(rs1.next()){
                  InputStream is = rs1.getBinaryStream("photo");
                  byte[] b = new byte[10240];
                  int n;
                    while((n = is.read(b)) >= 0) {
                        response.getOutputStream().write(b, 0, n);
                        System.out.println(n);
                }
                    is.close();

                st1.close();

                }
          }
          catch (Exception e){
          e.printStackTrace();
          }
      }
    }