- 浏览: 2675596 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
我素熊猫:
66666666666666
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL -
jonyzhou94:
1987_ming 写道1987_ming 写道System. ...
CXF框架入门实例 -
davidforit:
你那个“2004年Nutch创始人Doug Cutting基于 ...
《Hadoop基础教程》之初识Hadoop -
masuweng:
我的就是这么弄得,到了页面还是那个格式的 。
JSONObject转换JSON--将Date转换为指定格式 -
masuweng:
∑
JSONObject转换JSON--将Date转换为指定格式
开发人员都知道<img src="">标签,只要src指定相应路径就能够显示图片,但是这里有一个限制条件:如果项目被部署在服务器上(比如Java web项目部署在tomcat下)运行时,src路径只能指定项目中的图片。比如<img src="/common/java.jpg">表示显示该项目下common目录下的名为java.jpg的图片。而如果你希望显示服务器某个盘符下的指定图片,比如<img src="c:\xxx\xx.jpg">,即使该目录下有指定图片,这样写也是找不到该图片的,因为出于安全性考虑不能读取当前项目以外的数据。
最近在做一个小项目玩,有个添加用户功能,我需要上传用户图片后在页面显示该用户图片。上传功能已实现,代码在这里可以看到:http://blessht.iteye.com/blog/1405057,为了防止图片丢失,我的图片是上传到硬盘指定目录下,现在的难题是如何把图片显示出来。
在网上看了很多解决方案,其中有一种方案我觉得很好:img标签的src不是图片路径,而是一个servlet请求,该servlet通过java代码读取图片并以流的形式将图片数据打印到页面,这样就能显示指定盘符下的图片了。
首先看下运行效果:
- 实现说明
前面图显示很清楚:首先用户添加页面点击“上传”按钮显示上传界面,再指定相应图片点击上传,上传成功后关闭窗口并且将上传文件相应信息通过js回调函数的形式返回到父窗体。父窗体获取参数再通过jquery ajax的load方法加载一个jsp页面,该jsp页面实际只有一个<img>标签,用于显示图片,这样通过异步的形式就把指定图片找出来了。
首先是父窗体,用户添加页面的部分代码:
<script> ...... function openUpload_(){ openUpload(null,'JPG,GIF,JPEG,PNG','5',callback); } /** * 回调函数,获取上传文件信息 * realName真实文件名 * saveName文件保存名 * maxSize文件实际大小 */ function callback(realName,saveName,maxSize){ $("#photo_").val(saveName); $("#div_photo").load(root+"/showImage.jsp?saveName="+saveName+"&width_=200&height_=200"); } </script> ...... <tr> <td>头像:</td> <td> <input type="hidden" name="photo" id="photo_"></input> <input type="button" onclick="openUpload_()" value="上传"/> </td> </tr> <tr> <td colspan="2"> <div id="div_photo"></div> </td> </tr>
然后是showImage.jsp的代码
<body> <% String root = request.getContextPath(); String saveName = request.getParameter("saveName"); String width_ = request.getParameter("width_"); String height_ = request.getParameter("height_"); %> <img src="<%=root%>/CommonController.jhtml?method=showImage&saveName=<%=saveName%>" width="<%=width_%>" height="<%=height_%>"> </body>
最后是CommonController类的showImage方法用于处理图片流数据:
/** * 显示图片 * @param request * @param response * @return * @throws ServletException * @throws IOException */ public ModeAndView showImage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String saveName = request.getParameter("saveName"); FileInputStream hFile = new FileInputStream(fileUploadPro.getProperty("filePath")+saveName); // 以byte流的方式打开文件 d:\1.gif int i=hFile.available(); //得到文件大小 byte data[]=new byte[i]; hFile.read(data); //读数据 response.setContentType("image/*"); //设置返回的文件类型 OutputStream toClient=response.getOutputStream(); //得到向客户端输出二进制数据的对象 toClient.write(data); //输出数据 toClient.flush(); toClient.close(); hFile.close(); return null; }
至此一个困扰我两天的问题终于解决了,目前还剩下一个错误就是:每次显示图片时会报一个错误:java.lang.IllegalStateException: getOutputStream() has already been called for this response,希望有解决方法的朋友指点一下,谢谢!另外还有什么好的办法,大家也可以分享一下!
注:目前上传显示图片在IE8下可用,其它浏览器不能保证。
评论
2 楼
白糖_
2014-04-11
zhengyongqianluck 写道
在jsp页面中加入:
<%out.clear();
out = pageContext.pushBody(); %>
即可
<%out.clear();
out = pageContext.pushBody(); %>
即可
噢,多谢,回头项目再用到了就试试
1 楼
zhengyongqianluck
2014-04-10
在jsp页面中加入:
<%out.clear();
out = pageContext.pushBody(); %>
即可
<%out.clear();
out = pageContext.pushBody(); %>
即可
发表评论
-
关于HQL和JDBC SQL中字段相除的一点小经验
2016-02-25 11:42 3365最近在做一个功能,产 ... -
Java异常那些不得不说的事
2014-11-29 12:09 17101一、在finally块中做数据回收操作 比如数据库连接都 ... -
基于Java的通用图表接口设计与实现
2014-02-26 18:00 15122现如今,互联网上充斥 ... -
JSONObject转换JSON--将Date转换为指定格式
2014-02-18 22:12 77174项目中,经常会用JSONObject插件将JavaBean或 ... -
Java开发笔记
2012-12-13 10:30 18101、Map<key,value>的remove ... -
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案
2012-09-12 16:03 28135文章摘自:http://blog.csdn.net/yangw ... -
Java反射常用机制
2012-08-04 17:58 8398首先要求大家对Java泛型知识有所了解,因为程序代码中大量使 ... -
JDBC常用API之外的总结
2012-04-20 15:43 6485做JAVA的人玩JDBC肯定已经很熟练了,像DriverMa ... -
Java实现文件上传
2012-02-13 23:57 319794最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上 ... -
commons-fileupload实现文件上传功能实例
2012-01-17 21:50 67438Apache提供的commons-fileupload ja ... -
汉字转拼音pinyin4j
2011-09-03 09:57 2174以前在项目中遇到汉字转拼音的情况,于是在网上找到了pinyi ... -
J2EE监听器和过滤器基础
2011-09-02 16:56 7346Servlet程序由Servlet,Filter和Liste ... -
java通信之Socket通信基础
2011-06-21 21:08 5996正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数 ... -
Java通信之URL通信基础
2011-06-21 11:15 3476java对网络通信以及提供了比较全面的jdk支持,java.n ... -
java集合排序笔记
2011-06-15 15:21 1633public class CollectionDemo imp ... -
Java IO笔记
2011-06-15 14:23 1077public static void main(String ... -
java web项目整体异常处理机制
2011-06-08 22:04 13082在实际的j2ee项目中,系 ... -
解决带换行符的字段在web页面无法换行的问题
2011-05-31 11:46 18958在BS项目,有时候大家 ... -
[Microsoft][ODBC Microsoft Access 驱动程序] INSERT INTO 语句的语法错误的可能原因
2011-05-30 23:34 6162今天使用JDBC-ODBC桥接来操作Access数据库,发现了 ... -
java异常处理(初级)
2011-02-17 00:14 8229从学习到现在从事java开发一年多了,个人觉得对java只了解 ...
相关推荐
在 JSP 页面中,我们想要获取文件的路径,使用 JS 代码来实现该功能。然而,在 IE 浏览器中,却出现了问题,无法正确读取文件路径。网上搜索后发现,这是由于 IE8、9 的安全问题所引起的。 问题原因 在 IE9 下,...
这部分代码展示了如何使用JSP创建目录并在指定路径下写入内容。 ##### 重点理解: 1. **创建目录**: - 定义要创建的目录路径(如`c:/aaa/`)。 - 创建`java.io.File`对象并使用`mkdir()`方法创建目录。 2. **...
- 示例路径:`盘符:\工作空间名称\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\项目名\org\apache\jsp\jsps` - **MyEclipse**:通常位于Tomcat的`work`目录下。 - 示例路径:...
例如,如果你在项目中引用一个图片文件,相对路径可能是`images/logo.png`,这意味着从当前访问资源的路径开始查找`images`目录下的`logo.png`文件。在不同的场景中,相对路径的解释可能会有所不同。例如,如果在...
磁盘空间扩展是指在Windows系统中,通过命令来完成指定路径下的空间扩展。这种方法可以解决OA系统中附件存储磁盘空间不足的问题。 首先,需要了解OA系统的附件存储机制。OA系统中的附件存储在..\mydomain\...
这段代码监听键盘事件,当检测到用户按下F5键或其他指定组合键时,会阻止默认行为的发生。 ### 六、JavaScript控制图片缩放 **知识点描述:** 通过JavaScript可以实现网页中图片的鼠标滚轮缩放功能。 **详细解释...
本文档旨在详细介绍如何在64位环境下安装并配置Tomcat、Eclipse for JavaEE以及JDK8,以实现Web应用程序的开发与测试。通过本教程的学习,您将能够熟练掌握这些工具的基本安装配置流程,为后续的Web应用开发打下坚实...
7. **显示当前目录下的文件和子目录信息**:使用`dir`命令列出当前目录的内容。 8. **运行应用程序**:使用应用程序的完整路径加参数来启动程序,例如`D:\>C:\windows\notepad.exe`。 9. **Javap+*.class**:使用`...
如果 WEB 项目放在其他盘符,则在 tomcat 目录/bin/文件夹下,编辑 server.xml 文档,在文档的末尾处,添加:<Context path="/nala" docBase="e:\www\nala"></Context>,其中,path 为访问标识,docBase 为实际项目...
2. **下载与安装**:下载Apache Tomcat的压缩包后,解压到指定目录,通常建议选择一个非系统盘符以避免权限问题。解压后,你可以通过bin目录下的startup.bat(Windows)或startup.sh(Unix/Linux)脚本来启动Tomcat...
- `cd` 和 `g:`:这两条命令分别用于改变当前目录到盘符`G:`下的某个位置。实际操作时,需要根据实际情况替换为具体的路径。 - `cd G:\WebService\WebService\htdocs`:这条命令将当前工作目录切换到了`G:\...
24. **DOS命令**:在DOS环境下,命令`MD \USER\XY\P\X\Y`可以创建多级子目录,而其他选项可能会导致错误,如RD命令用于删除目录,MD命令创建单级目录,且路径前应有当前盘符。 25. **内存垃圾回收**:垃圾回收机制...
在命令行操作方面,JDK安装测试通常涉及使用cmd进入DOS系统,通过盘符命令进入到指定的硬盘,dir命令查看当前目录内容,cd命令切换到目标文件夹,cd..返回上一级目录。Java命令则用于显示当前安装的Java版本信息,...
- **绝对路径与相对路径**:题目中的路径为绝对路径,从盘符开始,明确指出文件所在的具体位置。 ### 2. 微型计算机的“32位” 题目中提到的“32位微型计算机”,这里的“32”指的是计算机的机器字长。 - **知识点...
<tr><th width="10%">盘符</th><th width="15%">类型</th><th width="20%">卷标</th><th width="15%">文件系统</th><th width="20%">总容量</th><th width="20%">可用空间</th></tr> On Error Resume Next Is...