图像未在浏览器中显示

时间:2014-06-06 05:34:59

标签: java java-ee servlets fileinputstream

我有一个存储在某个位置的图像说:C:\ Users \ admin \ Desktop \ SharedCrpto1 \ web \ RetrievedFiles \ FILE310 @ ST-testemp \ 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);

我做错了吗?请帮忙

1 个答案:

答案 0 :(得分:0)

根据您的问题,我理解的是您想要从本地文件系统读取图像文件&amp;使用显示在jsp页面中

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

第2步: 创建一个JSP页面,其中包含一个img标签&amp;它的src应该指向servlet url而不是真正的文件路径。由于img标签的src属性可以采用文件路径或字节流。在这里我们给它字节流,因为文件路径不起作用。

当你调用你的jsp页面时,它会尝试渲染img标签,那时它会调用你的servlet&amp;获取图像数据的字节流。因此它将渲染您的图像

图片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是应用程序名称&amp; ImageServlet是servlet url模式

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

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