当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

DWR入门 (四)文件上传

发表于: 2013-12-03   作者:alleni123   来源:转载   浏览次数:
DWR
摘要: DWR的文件上传有点繁琐,首先版本要使用3.0.RC2。 据我了解,DWR的版本更新还是比较慢的。 而且3.0.RC2没有被发布到maven中央服务器上,我们必须自己下载,加入本地仓库才能使用。 http://directwebremoting.org/dwr/downloads/index.html#maven 这个网址 http://directwebremoting.or
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入门 (四)文件上传

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、DWR配置说明: DWR配置文件主要有以下四个部分组成 1、web.xml文件主要配置DWR的后台控制器和配
第一步:需要文件包,其实就是dwr 3.0中例子所需要的包, dwr.jar 、 commons-fileupload-1.2.jar
第一步:首先搭建java的编译环境。创建一个Java Project工程,名为upload。 第二步:选中所需的Jar
Portal-Basic Java Web应用开发框架(简称 Portal-Basic)是一套功能完备的高性能Full-Stack Web应
Portal-Basic Java Web应用开发框架(简称 Portal-Basic)是一套功能完备的高性能Full-Stack Web应
1. 上传单个文件的步骤 第一步:引入jar包,后者jar包是很重要的,利用它的FileUtils处理上传的文件
第四弹的诞生完全不在自己最初的计划之中,是有个网友看了先前关于《ajaxfileupload.js系列》的文章
 Portal-Basic Web应用开发框架(简称 Portal-Basic或PB)是一套功能完备的超轻量级Web应用开发框
文件上传分为两个部分: (1)服务器端:需要使用FileUpload+common.io实现文件的上传; (2)客户端:
整理了文件上传的相关知识,给大家分享如下: 文件上传分为两个部分: (1)服务器端:需要使用FileUp
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号