jsp 图片路径问题

mirzlm 2009-02-25 02:43:20
就是我把上传的图片放在服务器的(D盘下的UpLoad下的pic文件夹里)
在服务器上 jsp 用file:///D:/UpLoad/pic/图片名方式显示没有问题,都可以显示出来
可是在客户端上却显示不出来,我想应该是file:///D:/UpLoad/pic/图片名方式是在本地的路径去取吧
那在客户端上应该怎么写这个服务器的绝对路径呢?
...全文
1043 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirzlm 2009-02-26
  • 打赏
  • 举报
回复
图片以流的形式输出是可以解决我这个问题,只是现在在用以流的形式输出时,图片可以显示,但服务器端会报异常,看来我还是另开一张贴子吧

谢谢各位的回答
huxhuxx 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhangxiangou 的回复:]
看来还是绝对路径与相对路径没有理解清楚?
[/Quote]
为什么用实际路径?
liang__ 2009-02-25
  • 打赏
  • 举报
回复

String path = getClass().getProtectionDomain().getCodeSource()
.getLocation().getPath();

这个可以得到服务器的根目录的URI
tfwin2 2009-02-25
  • 打赏
  • 举报
回复
用servlet很简单就解决了....
JSP.....观望一下吧....服务器端的路径不会解决...
mirzlm 2009-02-25
  • 打赏
  • 举报
回复
下班前,up下,晚上不能上网,明天再来看,希望有高手光顾过了
mirzlm 2009-02-25
  • 打赏
  • 举报
回复
pic.jsp

<%@ page language="java" pageEncoding="GB2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'pic.jsp' starting page</title>
</head>
<%
// 如果你想将输出包含在一个jsp中,可以用img标签调用本jsp
// <img src="pic.jsp?from=file&type=jpeg&src=c:\img\test.jpg">

// 图片来源, 从文件(file)或数据库(database)
//String from = request.getParameter("from") == null ? "" : request.getParameter("from").toString();

// 图片类型, jpeg/gif/bmp
String type = request.getParameter("type") == null ? "" : request.getParameter("type").toString();
response.reset();
response.setContentType("image/" + type);

java.io.InputStream in = null;

// 方式1: 以流方式读取图片文件. pic.jsp?from=file&type=jpeg&file=c:\img\test.jpg
//if ( from.equals("") || from.equals("file") )
//{
in = new java.io.FileInputStream(request.getParameter("src").toString());
//}
//else // 方式2: 从数据库中读取流. pic.jsp?from=database&type=jpeg&src=168
//{
// java.util.List list = DbWrapper.executeQuery(
// "select CONTENT from IMAGE where id = '" + request.getParameter("src").toString() + "'"
// );
//
// if ( list.size() > 0 )
// {
// in = (InputStream)(((java.util.Map)list.get(0)).get("CONTENT"));
// }
//}
if ( in != null )
{
byte[] b = new byte[1024];
int len=0;
while( ( len = in.read(b)) != -1 )
{
out.write("<SCRIPT>alert(\"哈哈\")</SCRIPT>");
response.getOutputStream().write(b);
}

in.close();
}
%>

<body>
</body>
</html>

<!-- 显示图片的地方 -->
<img src="pic.jsp?type=<%=((PicBean)pics.get(i)).getPic_name().substring(((PicBean)pics.get(i)).getPic_name().indexOf(".")+1) %>&src=D:/UpLoad/pic/<%=((PicBean)pics.get(i)).getPic_name() %>" width="122" height="155" border="0">



while( ( len = in.read(b)) != -1 )
用-1的话,一共显示5张,中间有一张图片不能显示,把-1改为0的话,可以显示5张
用-1会报错 错误信息是
getOutputStream() has already been called for this response
中文大概是说getOutputStream ( )已被要求这种反应

用0也会报错 错误信息是
Connection reset by peer: socket write error
中文大概是说连接重置的同行:套接字写入错误

求高手改一下错,谢谢
zhangxiangou 2009-02-25
  • 打赏
  • 举报
回复
看来还是绝对路径与相对路径没有理解清楚?
mirzlm 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jie015 的回复:]
这个应该没有影响吧!难道你用js显示图片的?
[/Quote]

并没有用js显示图片
是单纯的用<img src="file:///D:/UpLoad/pic/图片名>的方式来显示


回复太快!如果您是恶意刷楼,将会受到严厉惩罚!被警告了。。。
u370249526 2009-02-25
  • 打赏
  • 举报
回复
我是个新手``也遇到这个问题了,想知道怎么能解决`
mirzlm 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chris9999 的回复:]
看页面配了没有base标签,如果配置了base标签,
那么图片路径在客户端就应该以webroot为根目录,如:
项目中图片位置:WebRoot/upload/1.jpg
页面中: <img src="upload/1.jpg" />
如果没有配base标签,那么就应该使用相对路径,如:
项目中图片位置:WebRoot/upload/1.jpg
页面所在路径:WebRoot/abc/1.jsp
页面访问图片: <img src="../upload/1.jpg" />
[/Quote]
如果客户端以webroot为根目录的话,那么我想页面上不能单单以路径来显示图片了
因为file:///D:/UpLoad/pic/ 是与项目目录脱离的
mirzlm 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zou_wei_forever 的回复:]
可以在服务器端读取这个图片然后以流的形式输出到客户端。
[/Quote]

我并没有用这种方式做过,所以不怎么懂,我现在去试试,网上搜点例子

如果可以的话,希望能提供更多点的思路与帮助
mirzlm 2009-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Asinzy 的回复:]
http://url:port/project/***.jpg
你的服务器页面里的路径还是不对的吧?检查一下,你打开页面如果没有出来图片应该有个XX,在显示图片的位置右键,看属性里的图片地址是什么。
[/Quote]

右击图片,属性里是file:///D:/UpLoad/pic/图片名 不管是服务器还是客户端都是,
只是服务器可以显示,因为服务器本地上有,而客户端就不能显示,因为客户端的本地上没有

UpLoad并不是项目名,也是一个文件夹
也就是,我如果想把上传的图片放在E盘下,那路径就写成file:///E:/UpLoad/pic/
这个存放上传图片文件夹,是与服务器中项目目录脱离的
jie015 2009-02-25
  • 打赏
  • 举报
回复
这个应该没有影响吧!难道你用js显示图片的?
chris9999 2009-02-25
  • 打赏
  • 举报
回复
看页面配了没有base标签,如果配置了base标签,
那么图片路径在客户端就应该以webroot为根目录,如:
项目中图片位置:WebRoot/upload/1.jpg
页面中:<img src="upload/1.jpg" />
如果没有配base标签,那么就应该使用相对路径,如:
项目中图片位置:WebRoot/upload/1.jpg
页面所在路径:WebRoot/abc/1.jsp
页面访问图片:<img src="../upload/1.jpg" />
zou_wei_forever 2009-02-25
  • 打赏
  • 举报
回复
可以在服务器端读取这个图片然后以流的形式输出到客户端。
Asinzy 2009-02-25
  • 打赏
  • 举报
回复
http://url:port/project/***.jpg
你的服务器页面里的路径还是不对的吧?检查一下,你打开页面如果没有出来图片应该有个XX,在显示图片的位置右键,看属性里的图片地址是什么
mirzlm 2009-02-25
  • 打赏
  • 举报
回复

就是我把上传的图片放在服务器的(D盘下的UpLoad下的pic文件夹里)
在服务器上 jsp 用file:///D:/UpLoad/pic/图片名方式显示没有问题,都可以显示出来
可是在客户端上却显示不出来,我想应该是file:///D:/UpLoad/pic/图片名方式是在本地的路径去取吧
那要让客户端上显示图片,应该怎么写这个服务器的绝对路径呢?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧