dwr异步上传图片

简介: 这里需要用到commons-fileupload-1.2.2和commons-io-2.3 This is the web.xml  <?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xs

这里需要用到commons-fileupload-1.2.2和commons-io-2.3



This is the web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<servlet>
		<servlet-name>dwr-invoker</servlet-name>
		<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
		<!-- 配置debug参数为true后,就可以访问DWR的控制台了,访问地址为

http://ip:port/webApp/dwr/ -->
		<!-- 开发阶段可以开启控制台,但在产品交付时,务必关掉控制台 -->
		<init-param>
			<param-name>debug</param-name>
			<param-value>true</param-value>
		</init-param>
	</servlet>

	<servlet-mapping>
		<servlet-name>dwr-invoker</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>
</web-app>


This is DWR Config File----dwr.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
"http://getahead.org/dwr/dwr30.dtd">
<dwr>
	<allow>
		<create creator="new" javascript="JSUserManager">
			<param name="class" value="com.jadyer.dwr.UserManager" />
		</create>
	</allow>
</dwr>

下面是用于提交上传操作的前台页面upload.jsp



<%@ page language="java" pageEncoding="UTF-8"%>

<script type="text/javascript" src="<%=request.getContextPath

()%>/dwr/interface/JSUserManager.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/dwr/engine.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/dwr/util.js"></script>

<script type="text/javascript">
	function upload() {
		var file = dwr.util.getValue("myfile");
		alert(file.value);//不同浏览器在此处得到的值,不一定相同....IE9得到的是含全

路径的文件名,firefox12得到的是文件名
		alert(file);
		JSUserManager.upload(file, file.value, function(data){
			alert(data);
		});
	}
</script>

<input type="file" id="myfile"/>
<input type="button" value="上传文件" onclick="upload()"/>




最后是需要由DWR发布的UserManager.java
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.directwebremoting.WebContextFactory;

public class UserManager {
	/**
	 * 上传文件
	 * @param is       DWR会自动把dwr.util.getValue("myfile")转换为这里所需的

InputStream
	 * @param filename 不同浏览器传进来的值未必相同,IE9传是含全路径的文件名,firefox12

传的是文件名
	 * @return 文件的真实名字
	 */
	public String upload(InputStream is, String filename) throws IOException{
		String realname = FilenameUtils.getName(filename);                          

  //获取文件的真实名字
		HttpServletRequest request = WebContextFactory.get().getHttpServletRequest

(); //获取Servlet API
		String realpath = request.getSession().getServletContext().getRealPath

("/WEB-INF/upload");
		FileUtils.copyInputStreamToFile(is, new File(realpath, realname));
		return realname;
	}
}



补充:记得建立//WEB-INF//upload//


目录,其用于接收所上传的文件

目录
相关文章
|
10月前
|
前端开发 UED
React 模态框 Modal 组件详解
【10月更文挑战第27天】本文介绍了如何在 React 中实现一个功能完善的模态框组件。从基础概念入手,逐步讲解了简单的模态框实现、CSS 样式、传递子组件、键盘事件处理等高级功能。同时,还探讨了常见问题及易错点,如背景点击关闭、键盘事件冲突和动画效果。通过本文,读者可以全面了解 React 模态框组件的实现细节。
606 1
|
11月前
|
SQL Java 数据库连接
mybatis如何实现分页查询?
【10月更文挑战第19天】mybatis如何实现分页查询?
882 3
|
6月前
|
Oracle Java 关系型数据库
课时23:SWITCH开关语句
课时23介绍了SWITCH开关语句,它是根据数据类型(如int、char、枚举、String)进行判断的控制结构。从JDK 1.5起支持枚举类型,JDK 1.7开始支持String类型。其语法格式为`switch(数据){case 数值:{执行代码;break;}default:{执行代码;}}`。若每个case后未加break,则会继续执行后续代码。示例展示了如何使用switch语句处理整数和字符串,强调了break的重要性。SWITCH语句是编程语言发展中的关键技术之一。
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!(一)
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!(二)
HTML+CSS+JS实现十款好看的登录注册界面模板,赶紧收藏起来吧!
|
安全 前端开发 Java
java.lang.NullPointerException出现的几种原因及解决方案
java.lang.NullPointerException出现的几种原因及解决方案
9624 1
|
开发工具 Android开发
全网最详细的Android Studio卸载、安装和启动教程
全网最详细的Android Studio卸载、安装和启动教程
2207 0
全网最详细的Android Studio卸载、安装和启动教程
|
XML Java Apache
Struts2配置问题终极解决方案
从下午忙到现在,终于找到问题的根源了。写下此文,与君共勉。 我的目录结构是这样的。 关于配置文件加载问题 控制台下面报错,提示错误信息如下: 严重: Exception starting filter struts2 Unable to load configuration.
1183 0
|
2天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
339 123
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?