首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自MySQL的图像上的问号

问来自MySQL的图像上的问号
EN

Stack Overflow用户
提问于 2014-02-17 18:29:45
回答 1查看 30关注 0票数 0

我有一个MySQL数据库,其中有以下列:名、姓、灯泡

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

向Mads致以最好的问候

代码语言:javascript
复制
<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();
          }
      }
    }
EN

回答 1

Stack Overflow用户

发布于 2014-02-17 18:40:36

这是正确的代码:

代码语言:javascript
复制
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();
          }
      }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21826539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档