1.struts2-dwr-plugin-2.3.1.jar
<servlet>
<servlet-name>dwr</servlet-name>
<servletclass>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
dwr.xml配置如下:
<dwr>
<allow>
<!--creator="new":表示每一次dwr请求但是创建一个新的实例
javascript="DWRService"表示页面通过什么名字来对应调用你的java类提供服务 -->
<create creator="new" javascript="DWRService">
<!--指定为前台提供服务的java类 这里的DWRDemo类在页面使用的时候使用DWRService调用-->
<param name="class"value="net.farxiang.dwr.DWRUpload"> </param>
</create>
</allow>
</dwr>
<script type="text/javascript" src="/dwr/engine.js"></script>
对应 在步骤3:中定义的 javascript="DWRService" 关联的java类
<script type="text/javascript" src="/dwr/interface/DWRService.js"></script>
可选引入依赖提供一些方便的工具方法的使用
<script type="text/javascript" src="/dwr/util.js"></script>
因为在xml里开启了debug模式,以上引入的js文件都可以在url里输入项目路径/dwr得到。
<script type="text/javascript">
var upload = function(){
var headf = dwr.util.getValue("headfile");
DWRService.headUp(headf,function(savePath){
var div = document.getElementById("div");
var img = document.createElement("img");
img. savePath;
img.id = "target";
div.appendChild(img);
});
};
</srcipt>
<input type="file" name="headfile" id="headfile" onchange="upload();">
<div id="div"></div>
java代码如下:
package net.farxiang.dwr.DWRUpload;
import java.io.File;
import org.apache.commons.io.FileUtils;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.io.FileTransfer;
public class DWRUpload{
public String headUp(FileTransfer ft){
WebContext wc = WebContextFactory.get();
//获得应用路径
String headImages = wc.getSession().getServletContext().getRealPath("/p_w_picpaths");
File file = new File(headImages);
//如果文件夹不存在,就创建
if( !file.exists()){
file.mkdirs();
}
try{
//文件上传核心代码使用 commons-io-2.0.1.jar完成
String[] fileNameSplit = ft.getFilename().split("\\\\");
String fileName = fileNameSplit[fileNameSplit.length-1];
FileUtils.copyInputStreamToFile(ft.getInputStream(), new File(headImages+File.separator+fileName));
return headImages+File.separator+fileName;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。