`

DWR入门 (四)文件上传

    博客分类:
  • DWR
dwr 
阅读更多
DWR的文件上传有点繁琐,首先版本要使用3.0.RC2。
据我了解,DWR的版本更新还是比较慢的。 而且3.0.RC2没有被发布到maven中央服务器上,我们必须自己下载,加入本地仓库才能使用。
http://directwebremoting.org/dwr/downloads/index.html#maven


这个网址http://directwebremoting.org/jira/browse/DWR-331就是关于Chrome中DWR无法正常上传文件的具体错误信息以及解决方案。(其实IE也不行)


开始写代码。
首先在HelloDwr.java中加入以下代码:

	public String upload(InputStream is, String filename){
		String fn=FilenameUtils.getName(filename);
		try {
			FileUtils.copyInputStreamToFile(is, new File("d:/"+fn));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return fn;
	}


然后写一个上传jsp页面:


<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script type="text/javascript" src="<%=path%>/dwr/engine.js"></script>
<script type="text/javascript"
	src="<%=path%>/dwr/interface/HelloDwr.js"></script>


<script type="text/javascript">
 
	 $(function(){
	 	$("#btn").on("click",upload);
	 	
	 });
	 
	 function upload(){
	 	var f=$("#uf");
	 	var f2=document.getElementById("uf");
	 	//alert(f);
	 	//alert(f.val());
	 	console.log(f);
	 	HelloDwr.upload(f2,f2.value,function(data){
	 		alert(data);
	 	});
	 	
	 	
	 	
	 }
	
	
</script>

</head>

<body>
	 
	<input type="file" id="uf"/>
	<input id="btn" type="button" value="上传"/>



</body>
</html>



关于错误信息
1.如果dwr版本不正确,console会报错Cannot set property 'batch' of null
google查询便会找到上面那个官方的Issue网址。

2. 如果没有加入commons.fileupload依赖包,便会报错:
警告: Exception while processing batch
java.lang.UnsupportedOperationException: File uploads not supported
at org.directwebremoting.dwrp.UnsupportedFileUpload.parseRequest(UnsupportedFileUpload.java:41)
at org.directwebremoting.d wrp.Batch.parsePost(Batch.java:135)
at org.directwebremoting.dwrp.Batch.<init>(Batch.java:58)
at org.directwebremoting.dwrp.CallBatch.<init>(CallBatch.java:46)
at org.directwebremoting.dwrp.BaseCallHandler.handle(BaseCallHandler.java:74)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:120)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:141)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:575)





=========================
补充:
如果想把文件放入项目目录下,可以修改upload方法:

	public String upload(InputStream is, String filename){
		WebContext wc=WebContextFactory.get();
		HttpServletRequest req=wc.getHttpServletRequest();
		
		//这里可以将上传文件放入webapp/img目录中.
		String realPath=req.getSession().getServletContext().getRealPath("/img");
		System.out.println("realpath= "+realPath);
		
		
		
		
		String fn=FilenameUtils.getName(filename);
		try {
			FileUtils.copyInputStreamToFile(is, new File(realPath+fn));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return fn;
	}

运行之后,在myeclipse的webapp目录点刷新,便可看到上传文件。
分享到:
评论

相关推荐

    Dwr入门操作手册及dwr包

    2. **异步上传**:DWR支持异步文件上传,用户无需等待整个文件上传完毕就能继续操作其他功能。 3. **错误处理**:DWR提供了详细的错误处理机制,便于调试和异常处理。 **五、DWR入门操作手册** "Dwr入门操作手册....

    dwr入门简单实现示例

    DWR(Direct Web Remoting)是一种Java技术,它允许...DWR不仅适用于简单的数据交互,还支持更复杂的操作,如文件上传、异步处理、定时调用等。随着对DWR的深入理解和实践,你可以构建出更加动态、高效的Web应用。

    dwr入门例子 返回list

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的...这只是一个基础示例,实际应用中,DWR还能处理更复杂的交互,如文件上传、实时数据推送等,进一步提升Web应用的用户体验。

    Ajax框架DWR 入门例子

    了解基本用法后,你可以尝试使用DWR实现更复杂的功能,如文件上传、实时聊天、数据表格的动态加载等,以提升Web应用的用户体验。 通过学习DWR,开发者能够构建出交互性强、用户体验优良的Web应用程序,而这个入门...

    DWR入门教程之提示性文字

    提供的博文链接(https://hintcnuie.iteye.com/blog/175857)可能包含更详细的DWR入门教程和示例代码,建议访问学习以加深对DWR的理解和实践。 总结,DWR作为一个强大的工具,极大地简化了Web应用中的Ajax开发,...

    个人编写的一份dwr入门源代码

    这份"个人编写的一份dwr入门源代码"是针对初学者设计的,通过五个简单示例帮助理解DWR的基本用法和功能。 1. **DWR简介**:DWR简化了AJAX开发,通过自动处理跨域问题和JSON/JavaScript对象转换,使得前端可以像调用...

    dwr入门学习第一课范例

    在这个“dwr入门学习第一课范例”中,我们将探讨如何使用DWR来实现以下几个关键功能: 1. **用户名检测**:在用户注册页面,实时检查输入的用户名是否已存在。这通常通过Ajax技术实现,DWR可以简化这一过程。服务器...

    dwr入门教程

    3. **文件上传**:DWR可以实现异步文件上传,让用户看到上传进度,而不是传统的一次性提交整个表单。 三、DWR工作流程 1. **配置阶段**:在Web应用的初始化阶段,DWR读取配置文件,建立JavaScript对象与Java类的...

    DWR 入門與應用

    5. **文件上传**: 使用DWR进行异步文件上传,显示上传进度。 ### DWR的使用流程 1. **引入DWR JavaScript库**: 在HTML页面中引入DWR生成的JavaScript文件。 2. **设置安全配置**: 使用DWR提供的API设置安全配置,...

    DWR原理及中文文档

    3. **文件上传**:DWR支持AJAX方式的文件上传,前端选择文件后,后台处理文件上传,同时提供进度反馈。 ### DWR与框架的整合 DWR可以方便地与各种Web框架集成,例如: - **Spring框架**:DWR可以与Spring无缝结合...

    DWR学习笔记-HelloWorld篇

    通过实践这个“HelloWorld”项目,开发者能够对DWR有初步的认识,为进一步探索DWR的高级特性,如文件上传、缓存控制、安全设置等打下基础。同时,这也是一种学习Web开发中前后端交互机制的有效途径。

    DWR帮助文档,提供详细的示例

    - **示例代码**:提供丰富的示例,涵盖基本的AJAX调用、参数传递、异常处理、文件上传下载等多种应用场景。 - **最佳实践**:分享在实际项目中使用DWR的经验和技巧,如何优化性能,以及避免常见问题。 - **安全与...

    dwr积累的一些资源

    - **文件上传和下载**:通过异步方式处理大文件上传和下载,提升用户体验。 5. **DWR的优缺点**: - 优点:简化AJAX开发,提高用户体验,易于学习和使用,支持多种数据格式。 - 缺点:对于大型复杂应用,可能...

    《ajax框架:dwr与ext》实战

    此外,DWR还支持二进制文件上传和下载等功能,这些特性使得开发者可以更加专注于业务逻辑的实现,而非底层通信细节。 #### 二、DWR快速入门 1. **安装与配置**: - 下载DWR最新版本,并将其添加到项目的lib目录中...

    practical dwr project

    - **项目二**:文件上传和下载功能。这个案例展示了如何利用DWR优化文件传输过程,提高用户体验。 - **项目三**:动态图表展示。介绍如何结合DWR与图表库(如JFreeChart)来实现动态数据可视化。 - **项目四**:...

    基本于J2EE的Ajax宝典.rar

    19.4.2 定义 DWR的核心Servlet 113 19.4.3 将 Spring容器中的 Bean 转化成JavaScript 对象 113 19.5 在客户端调用 JavaScript 对象 114 19.5.1 获取 Blog文章列表 115 19.5.2 控制 Blog文章列表的翻页 116 19.5...

    Java-培训大纲.doc

    - Smartupload/Servlet/MVC:文件上传、请求处理、模型视图控制器设计模式。 - **开源框架**:逐步学习Struts 1.x、AJAX、Hibernate、Spring、Struts 2.0、JSF、DWR、JSON、JQuery等框架,掌握其核心原理和应用场景...

    Ext 开发指南 学习资料

    4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 4.11. 自动把数据填充到form里 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。 ...

    EXT2.0中文教程

    4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。 5.2. 先看看最基本的三个例子...

Global site tag (gtag.js) - Google Analytics