刚刚碰到了一个问题,就是在jsp中显示一个图片,这个图片在
d盘下,需要根据传入的值来动态的确定到底是哪个图片。
但是jsp却显示不了这个图片,图片文件夹在系统根目录下。
google了好长时间,都异口同声的说<img src="d:/xxx/xxx.jpg"></img>就ok了,
但我始终都不行。如果换成html完全可以,但在jsp就显示不了。
不知道各位大侠是如何做的。另,图片文件夹经理要求不能放在项目下,只能在项目所在的根目录下。
还有图片名要求用中文,这个也是处理不了。只能求救了。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【youhere1】截止到2008-07-11 13:58:03的历史汇总数据(不包括此帖):
    发帖的总数量:13                       发帖的总分数:600                      每贴平均分数:46                       
    回帖的总数量:156                      得分贴总数量:47                       回帖的得分率:30%                      
    结贴的总数量:13                       结贴的总分数:600                      
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:7.69  %               无满意结分率:5.00  %                  
    敬礼!
      

  2.   

    自己顶一个,不然沉了。
    还有<img src="file:///d:/xxx/xxx.jpg"></img>
    好像也不行。
      

  3.   

    最好把图片放在WEBROOT下  建个比如说PICTURE的文件夹  然后<img src="PICTURE/***.JPG"> </img> 
      

  4.   

    <img src="D:\zzz\zzz.gif">这样肯定可以读到图片的,没问题前提是那个图片的确存在
      

  5.   

    有些浏览器鉴于安全性不支持访问客户端本地的文件,比如客户端用苹果的safari浏览器选择一个图片时用src=“d:/aa.jpg”就显示不出来l
      

  6.   

    <IMG SRC="FILE://C:\Documents and Settings\heays\桌面\2.jpg" >
      

  7.   

    1、图片问题
    <%
    String path = request.getContextPath();
    %>
    <img src="<%=path%>/images/name.jpg"></img>
    如图片显示不出,可在网页上右击,属性,查看图片地址是否正确
    2、中文可能是页面编码设置问题
    <%@ page contentType="text/html; charset=UTF-8" %>
    3、图片放到根下更容易找些
      

  8.   


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        <title>图片显示</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      <body>
      <img src="file:///E:\images\878.jpg" width="400" height="240">
      </body>
    </html>
      

  9.   


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        <title>图片显示</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      <body>
      <img src="file:///E:\images\878.jpg" width="400" height="240">
      </body>
    </html>
      

  10.   

    稍微有点麻烦,说个思路吧
    <img src="/app/downloadPic.do?picName=xxxx" width="400" height="240">
    然后自己写个action,比如叫DownloadPic.java,在里面读d:/xxx/xxx.jpg的内容,
    然后写到response中去就可以了。
    楼主头像貌似一个日本MM。
      

  11.   


    public String getPicture() throws IOException {
    HttpServletRequest request = ServletActionContext.getRequest();
    String root = commonService.getUploadPathRoot();
    String dir = request.getParameter("dir");
    String fileName = request.getParameter("fileName");
    HttpServletResponse res = ServletActionContext.getResponse();
    String path = root + File.separatorChar + dir + File.separatorChar
    + fileName;
    File Fdir = new File(commonService.getUploadPathRoot() + File.separator
    + dir);
    if (!Fdir.exists()) {
    path = root + File.separatorChar + "Forum" + File.separatorChar
    + "Photo" + File.separatorChar + "DefaultPhoto.gif";
    }
    try {
    FileInputStream hFile = new FileInputStream(path); // 以byte流的方式打开文件
    int i = hFile.available(); // 得到文件大小
    byte data[] = new byte[i];
    hFile.read(data); // 读数据
    hFile.close();
    res.setContentType("image/*"); // 设置返回的文件类型
    OutputStream toClient = res.getOutputStream(); // 得到向客户端输出二进制数据的对象
    toClient.write(data); // 输出数据
    toClient.close();
    } catch (IOException e) // 错误处理
    {
    PrintWriter toClient = res.getWriter(); // 得到向客户端输出文本的对象
    res.setContentType("text/html;charset=gb2312");
    toClient.write("无法打开图片!");
    toClient.close();
    }
    return null;
    }
      

  12.   

    如果客户端的浏览器能直接访问服务器的绝对路径,那服务器就完蛋了。
    不要幻想用d:/xxx/xxx.jpg file:///d:/xxx/xxx.jpg之类的方法了,不靠谱。思路是做个SERVLET,客户端可以通过 http://www.xxx.com/servletname?jpgname=xxxx.jpg来访问。
    servlet从参数解析出文件名,然后到本地盘读取该文件,再用图片文件的模式传回给客户端
      

  13.   

    直接写src="d:\"是访问的客户端的D盘,你可以在自己的D盘下放张图片试试.
    正确做法楼上的几位前辈都提供了,用SERVLET做.
      

  14.   

    D盘是你打开Ie的那台机子的D盘吧不要搞错了
      

  15.   

    实在不行自己写个 Servlet 用 InputStream 读取图片数据,然后发往客户端,记得把 ContentType 设成 image/jpg 或 image/gif 等等。
      

  16.   


    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      
      <body>
        This is my JSP page. <br>
        <IMG SRC="C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\示例图片\\Sunset.jpg" >
      </body>
    </html>
      

  17.   

    20楼的
    <IMG SRC="C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\示例图片\\Sunset.jpg" >
    啥意思,你当是在 Java 中写字符串吗?HTML 代码不需要转移化表示 \ !!!
      

  18.   


    才弄明白,楼主把 JSP 页扔到服务器上,然后 <img src="d:/xxx/xxx.jpg"></img>img标签不用加结束标签,那客户端浏览器访问到你的 JSP 页面后会按 src 的路径到自己机器上找这个图片,而图片在服务器上,这样能找到就出鬼了。
      

  19.   

    <% 
    String path = request.getContextPath(); 
    %> 
    <img src=" <%=path%>/images/name.jpg"> </img> 
    如图片显示不出,可在网页上右击,属性,查看图片地址是否正确 
      

  20.   


    可行
    另外,搂住如果使用了中文图片名,别忘了jsp的url中文乱码问题
      

  21.   

    最后的解决方法还是放到项目下了,没办法,时间太紧了.
    不过看到各位大侠的方法,觉得有空闲的话还是用servelt去做.
    这样方便点.谢谢各位了.另,这个mm是中国制造.