博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dwr 文件上传
阅读量:6840 次
发布时间:2019-06-26

本文共 3880 字,大约阅读时间需要 12 分钟。

1. 直接上包 dwr 3.0 .jar  down url:http://directwebremoting.org/dwr/downloads/。

 

2. 在xml 文件中加入 以下 配置:

 

!-- The DWR servlet. -->

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

3.Create 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="JSFileUpload"> 这个意思的是你后台的java 类转换成js 文件后供调用的js文件名称(指定名称,由系统自动生成。

<param name="class" value="com.admin.bug.dwr.FileUpload" /> 这个value 就是你后台Java类的绝对地址。

</create>
</allow>
</dwr>

 

4.OK 环境搭好了 在jsp 页面上导入上述指定的js 文件名称以及 dwr相关的js 文件

<script type="text/javascript" src="dwr/engine.js"></script>

<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/JSFileUpload.js"></script>

 

5.jsp 上传文件 主要代码

<input type="file" name="uploadfile" id="file">  注意下红色的部分,这个等下特别提到!

<img class="closeimg" src="resources/image/cross.png" >
<input type="submit" value="上传" id="upload-but">

 

6. jquery 操作

//dwr 文件上传

$("#upimge").click(function(){
$("#uploadInfo").html("正在上传.....");
var file=dwr.util.getValue("uploadfile");   这是就是dwr发挥作用的地方,获取的方式不能习以为常的使用id  而是name .
//上传图片
JSFileUpload.uploadImage(file,function(data){    这个就是Java 类转换的js文件名称(自己定义的)去调用后台的Java 方法 这就实现了页面 调用后台方法跟在后台调用一样的方式 一样的爽。
//显示上传结果
$("#uploadInfo").html(data);

if(data=="完成上传"){

$("#uploadInfo").css("color","cyan")
//获取图片地址
JSFileUpload.getImgurl(file.value,function(data){
$("#imgshow").attr("src",data);
})
}else{
$("#imgshow").attr("src","resources/image/error2.png");
$("#uploadInfo").css("color","yellow")
}
});

 

7.上后台代码

public class FileUpload {

//文件上传
public String uploadImage(FileTransfer transfer) throws IOException  //看这个方法就是刚才我们js调用的方法哦。
{
//文件名称
String filename=transfer.getFilename();
//上传信息
String msg=null;
if(filename.isEmpty()){
msg="请选择文件上传";
return msg;
}
//文件大小
long fileSize=transfer.getSize();
System.out.println("总量文件:"+fileSize);
if(fileSize>(200*1024*1024)){
msg="文件过大"+fileSize/1024/1024+"MB";
return msg;
}
String editName=filename.substring(filename.lastIndexOf(".")+1, filename.length());
if(this.getFileType(editName).contains(editName)){
//保存地址
WebContext webContext = WebContextFactory.get();
String savePath=webContext.getHttpServletRequest().
getSession().getServletContext().getRealPath("/resources/uploadImage");
//保存文件夹
File folder=new File(savePath,filename);
if(folder.exists()){
folder.mkdirs();
}
try {
InputStream in=transfer.getInputStream();
//缓冲流
BufferedInputStream buffin=new BufferedInputStream(in);
//估计剩余资源
int available=buffin.available();
//转换成字节组
byte b[]=new byte[available];
System.out.println(b.length);
//输出到指定文件夹
FileOutputStream foutput = new FileOutputStream(folder);
//读取文件
in.read(b);
//写入到指定文件
foutput.write(b);
foutput.flush();
foutput.close();
System.out.println("上传成功");
msg="完成上传";
} catch (IOException e) {
System.out.println(e.getMessage());
msg=e.getMessage();
}
}else{
msg="不支持此格式文件";
}

return msg;

}

//获取文件有效性

@SuppressWarnings({ "rawtypes", "unchecked" })
public ArrayList getFileType(String editName)
{
ArrayList fileType=new ArrayList();
fileType.add("jpeg");
fileType.add("png");
fileType.add("pdf");
fileType.add("gif");
fileType.add("jpg");
fileType.add("xlsx");
return fileType;
}
//获取图片地址
public String getImgurl(String filename){
String finalname=FilenameUtils.getName(filename);
String imgurl="resources/uploadImage/"+finalname;
System.out.println(imgurl);
return imgurl;
}
}

 

转载于:https://www.cnblogs.com/taohome/p/5135808.html

你可能感兴趣的文章
C# DES 加密 解密
查看>>
linux 与 window 对比式理解与应用
查看>>
SEO中的DIV CSS样式的命名规则
查看>>
一些随笔,我有故事,你有酒吗
查看>>
SELECT子句顺序
查看>>
Mac 终端便利工具: 管理工具-Homebrew 和提示工具oh my zsh
查看>>
《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
查看>>
SAP 应用服务负载均衡的实现
查看>>
C# 生成二维码
查看>>
php闭包研究
查看>>
ruby Encoding
查看>>
牛客练习赛7 E 珂朵莉的数列
查看>>
登录mysql出现/var/lib/mysql/mysql.sock不存在
查看>>
升级vue-cli为 cli3 并创建项目
查看>>
最喜欢的 jQuery 插件
查看>>
meta标签
查看>>
FZU 2159 WuYou
查看>>
Postgres-XL部署记录(一)
查看>>
第28讲 | 弄懂数字货币交易平台(二)
查看>>
设计模式学习每天一个——Factory模式 和 Abstract Factory模式
查看>>