<img id="productimage" width=130 height=160 src="web1/images/temple.png"/>这样可以显示一个图片文件,但如果我的图片文件不在web1项目下的images目录,而是web1项目之外的目录,比如:d:\docs\a.jpg我想用img 元素显示 d:\docs\a.jpg 这个文件,jsp应该如何实现?

解决方案 »

  1.   

    绝对不可能,这样的话有严重安全隐患。所以即使你里面是d:\docs\a.jpg ,那么客户看到的也只是自己电脑上的d:\docs\a.jpg 文件,而不是服务器上的,如果没有这种限制,那么整台服务器的所有资源都可以被别人通过一个浏览器所访问。
    解决方法是你可以写一个servlet,把图片的地址改成/servlet/xxxx这样的地址,然后这个servlet就是负责读取图片并且以输出流的方式返回给用户
      

  2.   

    一个web项目能引用的是项目下的文件
    如果项目外的话没搞过
      

  3.   


    因为保存上传文件的目录放在项目外面,文件名及路径都保存在数据库中, 现在用户想在页面上直接看已经上传的图片文件, 难道必须把文件的目录放回到web项目之下? 
      

  4.   

    你可以写个代理servlet去读那些文件然后用流的形式返回
      

  5.   

    项目中图片一般都是放在ftp服务器上滴放在工程中的是一些不会改变的图标
      

  6.   

    必须放在项目路径下。
    然后img 里面给相对路径就可以了。
      

  7.   

    可以放在web项目之下,我也做过一个类似的图片上传的小项目,就是这么实现的。放在项目外是不能访问到的!
    也可以放在数据库中。
      

  8.   

    配置个虚拟路径就ok:
    1)打开tomcat安装目录下的conf目录中的server.xml文件,在最后的</Host>上面一行加入下面的一行:
    <Context path="/myImgs" docBase="d:/docs" reloadable="true"/>
    其中:d:/docs 对应你的文件存储路径。/myImgs对应你在浏览器里面要输入的虚拟路径。要注意不要让它与其他的项目的虚拟路径相同以免冲突。2)如果tomcat是5.5及以上
    打开tomcat安装目录下的conf目录中的web.xml文件,修改里面的参数:
    <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
    </init-param>
    把这段代码中的第二行的false改为true就可以了。保存修改后的web.xml文件,退出该文件。
    5.0及以下版本不需要改动。
    3)页面上就可以用 <img src="http://localhost:8088/myImgs/login02.gif">
    来访问该图片了。注意:如果是eclipse(我的是jbuilder2007),由于它发布的路径可能不是配置的tomcat安装目录,
    因此,你要修改的可能不是tomcat/conf目录下的那两个文件,而是:
    workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf
    下的。其中 tmp1还是tmp0还是tmpN,由你发布的项目个数而定。我已经这么弄成功了,楼主好运。
      

  9.   

    要是这个可以实现的话,那我搞个网页,你只要访问我的网页,我就把你的机器上各种各样的密码文件hidden到form里,然后我不就很容易搞到n多密码了么?
      

  10.   

    有些朋友似乎没看懂我的问题。  crazylaa 的 答案似乎是我想要的,谢谢,我有空试试行不行.