【问题标题】:Image not being displayed in browser图片不显示在浏览器中
【发布时间】:2014-06-06 05:34:58
【问题描述】:

我将图像存储在某个位置,例如:C:\Users\admin\Desktop\SharedCrpto1\web\RetrievedFiles\FILE310@ST-testtemp\abc.png。现在当我尝试在我的 jsp 页面中显示它时即使图像的路径正确,图像也看不到。

这个图片是在我的服务器处理客户端提供的浏览图片后显示的。

我试过了:

<img src="<%=path%>" alt="No image" />

特定文件夹中的图像是由我的 servlet 创建的,如下所示:

File filesstore = new File("C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\RetrievedFiles\\FILE310@ST-testemp\\");
if(!filesstore.exists())
     {
           System.out.println("MAKING DIRECTORY..");
           filesstore.mkdirs();

     }

To copy one file to this location I did : 

FileInputStream fis = new FileInputStream("C:\\test.png");
int xx=fis.available();
byte[] b = new byte[xx];
fis.read(b);
FileOutputStream fos=new FileOutputStream("C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\RetrievedFiles\\FILE310@ST-testemp\\abc.png");
fos.write(b);

我做错了什么吗?请帮忙

【问题讨论】:

  • 你给了什么path?你了解服务器端和客户端处理的区别吗?
  • @SotiriosDelimanolis 这个图片是在我的服务器处理客户端提供的浏览图片后显示的。
  • path 的值是多少?如果您打开浏览器的网络控制台,图片的 HTTP 请求是什么样的?
  • 这个文件和路径在服务器上吗?
  • @SotiriosDelimanolis 它有点像假设我有页面 A.jsp,我可以选择浏览一个文件,在这里我把它 C:\\test.png.然后点击提交假设第二个 jsp 页面打开要在地址 C:\Users\admin\Desktop\SharedCrpto1\web\RetrievedFiles\FILE310@ST-testtemp\abc.png 显示图像的位置。

标签: java jakarta-ee servlets fileinputstream


【解决方案1】:

从您的问题中,我了解到您想从本地文件系统读取图像文件并使用 jsp 页面显示

第 1 步 为此,您需要一个 servlet 或 jsp,它将读取文件并转换为 byte[] 并再次将 byte[] 写入 ServletOutputStream 。

第 2 步: 创建一个带有 img 标签的 JSP 页面,它的 src 应该指向 servlet url 而不是真正的文件路径。因为 img 标签的 src 属性可以采用文件路径或字节流。在此我们给它字节流,因为文件路径不起作用.

当你调用你的jsp页面时,它会尝试渲染img标签,然后它会调用你的servlet并获取图像数据的字节流。所以它会渲染你的图像

图像小服务程序

@WebServlet("/ImageServlet")
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)                        throws ServletException, IOException {
    //place your file path
    File imageFile =new File("/home/ashok/Pictures/Siberischer.jpg");
    ServletOutputStream outputStream = response.getOutputStream();
    byte[] imageBytes = FileUtils.readFileToByteArray(imageFile);
    outputStream.write(imageBytes);
    outputStream.close();
  }
 }

JSP PAGE(显示图片) 在你的jsp中只写这个标签

JspPage 是应用程序名称,ImageServlet 是 servlet url 模式

<img alt="NO IMAGE" src="/JspImage/ImageServlet">

FileUtils 存在 Apache Commons IO 库将 jar 下载到您的项目中

【讨论】: