Home > other >  Can't display image uploaded in JSP page but it shows when the url is typed in the browser'
Can't display image uploaded in JSP page but it shows when the url is typed in the browser'

Time:04-06

My web Java project with servlets/jsp can upload images (even thought is not the best way), but when I try to show the images in a table (using JSTL), there's just a blank image, like the url of image is broken. But when I copy the url image and paste in the browser's address bar, the image is shown as expected. The url is like this:

file:///c:/Users/user/Documents/NetBeansProjects/Project1/target/Project-1.0-SNAPSHOT//images/image1.png

This is how is set on the JSP page:

<img src="<c:out value="${requestScope.path}" /><c:out value="${test.image}" />" />

Thanks in advance!

CodePudding user response:

When you type a URL with a file protocol into your browser's address bar, your browser asks your operating system for the file. When you put that same URL into a img tag on a HTML page, the browser now makes a HTTP request for the file. But, the file is not accessible over the internet. In order to do what want to do, you must have a Servlet read the file from the file system and then put it into a HTTP response that can be sent when the browser requests the image. Here is demonstration code.

package rick;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
@WebServlet("/serveImage")
public class ServeImage extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("image/jpeg");
        FileInputStream fis = new FileInputStream("C:/Users/rick/Documents/RickProfile.jpeg");
        fis.transferTo(response.getOutputStream());
    }
} 

and request it with an img tag like

  <img src="serveImage" />
  • Related