刚刚碰到了一个问题,就是在jsp中显示一个图片,这个图片在
d盘下,需要根据传入的值来动态的确定到底是哪个图片。
但是jsp却显示不了这个图片,图片文件夹在系统根目录下。
google了好长时间,都异口同声的说<img src="d:/xxx/xxx.jpg"></img>就ok了,
但我始终都不行。如果换成html完全可以,但在jsp就显示不了。
不知道各位大侠是如何做的。另,图片文件夹经理要求不能放在项目下,只能在项目所在的根目录下。
还有图片名要求用中文,这个也是处理不了。只能求救了。
d盘下,需要根据传入的值来动态的确定到底是哪个图片。
但是jsp却显示不了这个图片,图片文件夹在系统根目录下。
google了好长时间,都异口同声的说<img src="d:/xxx/xxx.jpg"></img>就ok了,
但我始终都不行。如果换成html完全可以,但在jsp就显示不了。
不知道各位大侠是如何做的。另,图片文件夹经理要求不能放在项目下,只能在项目所在的根目录下。
还有图片名要求用中文,这个也是处理不了。只能求救了。
楼主【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 %
敬礼!
还有<img src="file:///d:/xxx/xxx.jpg"></img>
好像也不行。
<%
String path = request.getContextPath();
%>
<img src="<%=path%>/images/name.jpg"></img>
如图片显示不出,可在网页上右击,属性,查看图片地址是否正确
2、中文可能是页面编码设置问题
<%@ page contentType="text/html; charset=UTF-8" %>
3、图片放到根下更容易找些
<%@ 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>
<%@ 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>
<img src="/app/downloadPic.do?picName=xxxx" width="400" height="240">
然后自己写个action,比如叫DownloadPic.java,在里面读d:/xxx/xxx.jpg的内容,
然后写到response中去就可以了。
楼主头像貌似一个日本MM。
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;
}
不要幻想用d:/xxx/xxx.jpg file:///d:/xxx/xxx.jpg之类的方法了,不靠谱。思路是做个SERVLET,客户端可以通过 http://www.xxx.com/servletname?jpgname=xxxx.jpg来访问。
servlet从参数解析出文件名,然后到本地盘读取该文件,再用图片文件的模式传回给客户端
正确做法楼上的几位前辈都提供了,用SERVLET做.
<%@ 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>
<IMG SRC="C:\\Documents and Settings\\All Users\\Documents\\My Pictures\\示例图片\\Sunset.jpg" >
啥意思,你当是在 Java 中写字符串吗?HTML 代码不需要转移化表示 \ !!!
才弄明白,楼主把 JSP 页扔到服务器上,然后 <img src="d:/xxx/xxx.jpg"></img>img标签不用加结束标签,那客户端浏览器访问到你的 JSP 页面后会按 src 的路径到自己机器上找这个图片,而图片在服务器上,这样能找到就出鬼了。
String path = request.getContextPath();
%>
<img src=" <%=path%>/images/name.jpg"> </img>
如图片显示不出,可在网页上右击,属性,查看图片地址是否正确
可行
另外,搂住如果使用了中文图片名,别忘了jsp的url中文乱码问题
不过看到各位大侠的方法,觉得有空闲的话还是用servelt去做.
这样方便点.谢谢各位了.另,这个mm是中国制造.