最近在研究jsp图片显示的问题,利用img标签,显示本工程下的相对路径下的图片当然都没有问题,现在考虑到不想把图片只放到本工程下,如果放在硬盘的另一个目录下,用系统绝对路径来找到话,比如<img src="file:///X:\X.jpg">,这样在预览里看的到可是在实际的浏览器中现在几乎都屏蔽了,这样不行。就考虑用一个javabean来读取指定的图片文件,可是不知道怎么把读出来的file类用在src下,知道的帮忙回答一下好吗?或者还有什么好的解决方法,可以把图片放在硬盘的另外地方。如果是另外一台机器上硬盘里的图片呢,可以直接访问吗,还是必须启动一个服务器来提供图片?

解决方案 »

  1.   

    直接访问肯定不行,因为你的服务不能访问服务以外的资源.不过象你说的用程序把文件的图片读出来到是可行.写一个servlet,然后setContentType("image/jpeg")设置类型,然后用流读出文件.你在jsp页面上就可以直接访问这个servlet的地址来当作图片了
      

  2.   

    能不能把简单的代码写一写阿,主要是jsp上的
      

  3.   


    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html; charset=GBK");
    response.setContentType("image/jpeg");

    FileInputStream fis = new FileInputStream("C:/xxx.jpg");
    OutputStream os = response.getOutputStream();

    try {
    int count = 0;
    byte[] buffer = new byte[1024*8];
    while ( (count = fis.read(buffer)) != -1 )
    os.write(buffer, 0, count);
    } finally {
    fis.close();
    os.close();
    }
    }
    写这样一个servlet,将图片读出来.然后直接访问这个servlet就可以了在页面里也可以直接引用<img src="你的servlet地址" />
      

  4.   

    <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import="java.io.FileInputStream"%>
    <%@ page import="java.io.OutputStream"%><%
       String perfectName = "c://1348108148682.jpg";
       FileInputStream is = new FileInputStream(perfectName);
       int i = is.available(); // 得到文件大小
       byte data[] = new byte[i];
       is.read(data); // 读数据
       is.close();
       response.setContentType("image/*"); // 设置返回的文件类型
       OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象
       toClient.write(data); // 输出数据
       toClient.close();
    %>