`
conkeyn
  • 浏览: 1522799 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

DWR 3.0 上传文件

阅读更多

第一步:需要文件包,其实就是dwr 3.0中例子所需要的包, dwr.jar commons-fileupload-1.2.jar commons-io-1.3.1.jar

 

 

第二步:编辑web.xml,添加dwr-invoke

	<servlet>
		<display-name>DWR Sevlet</display-name>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<init-param>
			<description>是否打开调试功能</description>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>
			<description>日志级别有效值为: FATAL, ERROR, WARN (the default), INFO and DEBUG.</description>
			<param-name>logLevel</param-name>
			<param-value>DEBUG</param-value>
		</init-param>
		<init-param>
			<description>是否激活反向Ajax</description>
			<param-name>activeReverseAjaxEnabled</param-name>
			<param-value>true</param-value>
		</init-param>
		<init-param>  
		     <description>在WEB启动时是否创建范围为application的creator</description>  
		     <param-name>initApplicationScopeCreatorsAtStartup</param-name>  
		     <param-value>true</param-value>  
		</init-param>  
		<init-param>
			<description>在WEB启动时是否创建范围为application的creator</description>  
	   		<param-name>preferDataUrlSchema</param-name>
	    	<param-value>false</param-value>
	    </init-param>
 		<load-on-startup>1</load-on-startup>  
		
	</servlet>
	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>


 第三步:创建上传类FileUpload.java,编辑代码,内容如下:

package learn.dwr.upload_download;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

/**
 * title: 文件上传
 * @author Administrator
 * @时间 2009-11-22:上午11:40:22
 */
public class FileUpload {

	/**
	 * @param uploadImage 圖片文件流
	 * @param uploadFile 需要用简单的文本文件,如:.txt文件,不然上传会出乱码
	 * @param color
	 * @return
	 */
	public BufferedImage uploadFiles(BufferedImage uploadImage,
			String uploadFile, String color) {
		// uploadImage = scaleToSize(uploadImage);
		// uploadImage =grafitiTextOnImage(uploadImage, uploadFile, color);
		return uploadImage;
	}

	/**
	 * 文件上传时使用InputStream类进行接收,在DWR官方例中是使用String类接收简单内容
	 * 
	 * @param uploadFile
	 * @return
	 */
	public String uploadFile(InputStream uploadFile, String filename)
			throws Exception {
		WebContext webContext = WebContextFactory.get();
		String realtivepath = webContext.getContextPath() + "/upload/";
		String saveurl = webContext.getHttpServletRequest().getSession()
				.getServletContext().getRealPath("/upload");
		File file = new File(saveurl + "/" + filename);
		// if (!file.exists()) {
		// file.mkdirs();
		// }
		int available = uploadFile.available();
		byte[] b = new byte[available];
		FileOutputStream foutput = new FileOutputStream(file);
		uploadFile.read(b);
		foutput.write(b);
		foutput.flush();
		foutput.close();
		uploadFile.close();
		return realtivepath + filename;
	}

	private BufferedImage scaleToSize(BufferedImage uploadImage) {
		AffineTransform atx = new AffineTransform();
		atx
				.scale(200d / uploadImage.getWidth(), 200d / uploadImage
						.getHeight());
		AffineTransformOp atfOp = new AffineTransformOp(atx,
				AffineTransformOp.TYPE_BILINEAR);
		uploadImage = atfOp.filter(uploadImage, null);
		return uploadImage;
	}

	private BufferedImage grafitiTextOnImage(BufferedImage uploadImage,
			String uploadFile, String color) {
		if (uploadFile.length() < 200) {
			uploadFile += uploadFile + " ";
		}
		Graphics2D g2d = uploadImage.createGraphics();
		for (int row = 0; row < 10; row++) {
			String output = "";
			if (uploadFile.length() > (row + 1) * 20) {
				output += uploadFile.substring(row * 20, (row + 1) * 20);
			} else {
				output = uploadFile.substring(row * 20);
			}
			g2d.setFont(new Font("SansSerif", Font.BOLD, 16));
			g2d.setColor(Color.blue);
			g2d.drawString(output, 5, (row + 1) * 20);
		}
		return uploadImage;
	}
}

 第四步:添加到dwr.xml

	<create creator="new">
		<param name="class" value="learn.dwr.upload_download.FileUpload" />
	</create>

 第五步:添加前台html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>二进制文件处理,文件上传</title>
<script type='text/javascript' src='/learnajax/dwr/interface/FileUpload.js'></script>
<script type='text/javascript' src='/learnajax/dwr/engine.js'></script>
<script type='text/javascript' src='/learnajax/dwr/util.js'></script>
<script type='text/javascript' >
function uploadFiles(){
	var uploadImage = dwr.util.getValue("uploadImage");
	 FileUpload.uploadFiles(uploadImage, "", "", function(imageURL) {
		alert(imageURL);
    	dwr.util.setValue('image', imageURL);
  });

}
function uploadFile(){
	var uploadFile = dwr.util.getValue("uploadFile");
	//var uploadFile =document.getElementById("uploadFile").value;
	var uploadFile_temp = uploadFile.value.replace("\\","/");
	var filenames = uploadFile.value.split("/");
	var filename = filenames[filenames.length-1];
	//var extension = e[e.length-1];
	FileUpload.uploadFile(uploadFile,filename,function(data){
		var file_a= document.getElementById("file_a");
		file_a.href=data;
		file_a.innerHTML=data;
		document.getElementById("filediv").style.display="";
	});
}
	
</script>
</head>

<body>
<table border="1" cellpadding="3" width="50%">
	<tr>
    	<td>Image</td>
        <td><input type="file" id="uploadImage" /></td>
        <td><input type="button" onclick="uploadFiles()" value="upload"/><div id="image.container">&nbsp;</div></td>
    </tr>
    <tr>
    	<td>File</td>
        <td><input type="file" id="uploadFile" /></td>
        <td><input type="button" onclick="uploadFile()" value="upload"/><div id="file.container">&nbsp;</div></td>
    </tr>
    <tr>
    	<td colspan="3"></td>
    </tr>
</table>
<img id="image" src="javascript:void(0);"/>
<div id="filediv" style="display:none;">
<a href="" id="file_a">上传的文件</a>
</div>
</body>
</html>
 

添加进度条么,就需要用reverse ajax 进行配合使用了。

 

 

  • 大小: 34.7 KB
分享到:
评论
4 楼 liangzedong 2013-09-28  
上传文件的时候,使用InputStream 报错,dwr2怎么处理呢?还是非得用dwr3呢,项目中改的东西太多的所以没办法,求解决... thx
3 楼 limingnihao 2011-06-03  
终于找到原文了。
2 楼 easonfans 2011-02-20  
easonfans 写道
上传文件的时候,使用InputStream 报错……

呵呵,原文没有错误,使我使用的dwr2,而原文说的是3,抱歉!
1 楼 easonfans 2011-02-19  
上传文件的时候,使用InputStream 报错……

相关推荐

    extjs+dwr3.0实现文件上传

    在“EXTJS+DWR3.0实现文件上传”这个主题中,我们将探讨如何结合这两者来实现一个高效且用户友好的文件上传功能。在实际的Web应用中,文件上传是一个常见的需求,例如在社交媒体平台上传图片、在文档分享网站上传...

    dwr3.0 文件上传

    标题 "dwr3.0 文件上传" 涉及到的是Direct Web Remoting(DWR)框架的一个关键特性,即在Web应用中实现文件的上传功能。DWR是一款开源JavaScript库,它允许JavaScript代码直接调用Java服务器端的方法,从而在浏览器...

    dwr3.0学习

    DWR 3.0 提供了一种方便的方法来处理文件上传。首先,你需要在客户端(HTML页面)创建一个`&lt;input type="file"&gt;`元素,让用户选择要上传的文件。然后,你可以编写一个JavaScript函数,利用DWR的API来调用服务器上的...

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0学习笔记.txt DWR3.0学习网址.txt dwr分页.doc DWR分页代码.doc DWR中文文档.doc DWR中文文档.pdf dwr做comet的完整实现.doc Spring整合DWR comet ...

    DWR_3.0_上传文件.doc

    ### DWR 3.0 上传文件知识点解析 #### 一、DWR 3.0 简介 Direct Web Remoting (DWR) 是一个简化 Ajax 应用开发的框架,它允许开发者通过简单的 JavaScript 调用来访问服务器端 Java 对象。DWR 3.0 在原有基础上...

    DWR 实现ajax上传的小实例

    例如,创建一个名为`FileUploadService`的类,其中有一个`uploadFile`方法接收`Part`类型的参数,这是Java Servlet 3.0及以上版本支持的文件上传API。 2. 在`dwr.xml`中暴露这个接口:配置DWR,允许JavaScript调用`...

    dwrupload文件上传

    在本项目“dwrupload”中,重点是实现基于DWR3.0的异步文件和图片上传功能。 DWR3.0是一个开源框架,它提供了在浏览器端与服务器端进行动态交互的能力,使得开发者能够使用JavaScript直接调用服务器端的Java方法,...

    uploadify3.0 strtus2 dwr3整合例子

    在这个例子中,DWR可能用于在文件上传过程中与服务器进行实时通信,例如反馈上传进度或者处理异常情况。 项目描述中提到的"完整例子 myeclipse导入即用"意味着这个压缩包包含了所有必要的文件和配置,可以直接在...

    用dwr做的上传下载

    例如,可以有一个`FileUploadService`接口,其中有一个`uploadFile`方法接收`Part`对象,这是Servlet 3.0引入的用于处理文件上传的API。 3. **映射JavaScript对象**:在DWR的`dwr.xml`配置文件中,将`...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).zip

    在OA系统中,DWR增强了用户体验,使得用户无需刷新页面就能实时获取服务器数据,如工作流状态更新、异步文件上传等,提高了交互性和响应速度。 这些技术的组合,构建了一个高效、灵活且易于维护的OA系统。Struts...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar

    - **文档管理**:文件上传、下载、共享,版本控制。 - **会议管理**:预约、通知、记录。 - **日程安排**:个人及团队的日程规划。 - **公告通知**:发布、订阅公司内部消息。 - **项目管理**:跟踪项目进度,分配...

    java_jsp项目源码_OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar

    OA办公自动化管理系统是一款基于Struts1.2、Hibernate3.0、Spring2和DWR的综合性企业级应用解决方案,旨在帮助企业实现高效、便捷的办公管理。该系统具备以下功能: 1. 用户管理:支持用户注册、登录、权限分配、...

    java OA办公自动化管理系统(ssh)

    在这个项目中,用户可以进行审批流程、上传下载文件、发起会议等操作,实现无纸化办公,减少人力成本。 4. **数据库设计**: 数据库文件是系统运行的基础,包含表结构、数据和索引等。SQL Server是一个强大的关系...

    毕业设计论文-IT计算机-OA办公自动化管理系统-源码.zip

    文档管理模块提供文件上传、下载、分享等功能,方便信息的存储和交流;日程安排则帮助用户规划工作,提醒重要事件;通知公告模块则可以及时发布公司政策、活动等信息,确保信息的传播。 在开发过程中,需要遵循软件...

    java学习线路

    * Struts2:MVC 与 struts 体系、Action 和 Result、国际化和标签库、文件上传、下载、类型转换和输入检验、拦截器与插件开发 * Hibernate:ORM 与持久化映射、关系映射、继承映射、延迟加载、性能调优、HQL 查询、...

    Java-培训大纲.doc

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

Global site tag (gtag.js) - Google Analytics