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目录点刷新,便可看到上传文件。
分享到:
相关推荐
2. **异步上传**:DWR支持异步文件上传,用户无需等待整个文件上传完毕就能继续操作其他功能。 3. **错误处理**:DWR提供了详细的错误处理机制,便于调试和异常处理。 **五、DWR入门操作手册** "Dwr入门操作手册....
DWR(Direct Web Remoting)是一种Java技术,它允许...DWR不仅适用于简单的数据交互,还支持更复杂的操作,如文件上传、异步处理、定时调用等。随着对DWR的深入理解和实践,你可以构建出更加动态、高效的Web应用。
Direct Web Remoting (DWR) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的...这只是一个基础示例,实际应用中,DWR还能处理更复杂的交互,如文件上传、实时数据推送等,进一步提升Web应用的用户体验。
了解基本用法后,你可以尝试使用DWR实现更复杂的功能,如文件上传、实时聊天、数据表格的动态加载等,以提升Web应用的用户体验。 通过学习DWR,开发者能够构建出交互性强、用户体验优良的Web应用程序,而这个入门...
提供的博文链接(https://hintcnuie.iteye.com/blog/175857)可能包含更详细的DWR入门教程和示例代码,建议访问学习以加深对DWR的理解和实践。 总结,DWR作为一个强大的工具,极大地简化了Web应用中的Ajax开发,...
这份"个人编写的一份dwr入门源代码"是针对初学者设计的,通过五个简单示例帮助理解DWR的基本用法和功能。 1. **DWR简介**:DWR简化了AJAX开发,通过自动处理跨域问题和JSON/JavaScript对象转换,使得前端可以像调用...
在这个“dwr入门学习第一课范例”中,我们将探讨如何使用DWR来实现以下几个关键功能: 1. **用户名检测**:在用户注册页面,实时检查输入的用户名是否已存在。这通常通过Ajax技术实现,DWR可以简化这一过程。服务器...
3. **文件上传**:DWR可以实现异步文件上传,让用户看到上传进度,而不是传统的一次性提交整个表单。 三、DWR工作流程 1. **配置阶段**:在Web应用的初始化阶段,DWR读取配置文件,建立JavaScript对象与Java类的...
5. **文件上传**: 使用DWR进行异步文件上传,显示上传进度。 ### DWR的使用流程 1. **引入DWR JavaScript库**: 在HTML页面中引入DWR生成的JavaScript文件。 2. **设置安全配置**: 使用DWR提供的API设置安全配置,...
3. **文件上传**:DWR支持AJAX方式的文件上传,前端选择文件后,后台处理文件上传,同时提供进度反馈。 ### DWR与框架的整合 DWR可以方便地与各种Web框架集成,例如: - **Spring框架**:DWR可以与Spring无缝结合...
通过实践这个“HelloWorld”项目,开发者能够对DWR有初步的认识,为进一步探索DWR的高级特性,如文件上传、缓存控制、安全设置等打下基础。同时,这也是一种学习Web开发中前后端交互机制的有效途径。
- **示例代码**:提供丰富的示例,涵盖基本的AJAX调用、参数传递、异常处理、文件上传下载等多种应用场景。 - **最佳实践**:分享在实际项目中使用DWR的经验和技巧,如何优化性能,以及避免常见问题。 - **安全与...
- **文件上传和下载**:通过异步方式处理大文件上传和下载,提升用户体验。 5. **DWR的优缺点**: - 优点:简化AJAX开发,提高用户体验,易于学习和使用,支持多种数据格式。 - 缺点:对于大型复杂应用,可能...
此外,DWR还支持二进制文件上传和下载等功能,这些特性使得开发者可以更加专注于业务逻辑的实现,而非底层通信细节。 #### 二、DWR快速入门 1. **安装与配置**: - 下载DWR最新版本,并将其添加到项目的lib目录中...
- **项目二**:文件上传和下载功能。这个案例展示了如何利用DWR优化文件传输过程,提高用户体验。 - **项目三**:动态图表展示。介绍如何结合DWR与图表库(如JFreeChart)来实现动态数据可视化。 - **项目四**:...
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...
- Smartupload/Servlet/MVC:文件上传、请求处理、模型视图控制器设计模式。 - **开源框架**:逐步学习Struts 1.x、AJAX、Hibernate、Spring、Struts 2.0、JSF、DWR、JSON、JQuery等框架,掌握其核心原理和应用场景...
4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 4.11. 自动把数据填充到form里 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。 ...
4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。 5.2. 先看看最基本的三个例子...