ajax上传文件struts2后台接收处理
前段时间由于项目的需求,实现文件上传并要求页面不刷新。我便首先想到了ajax,我通过查阅之前终于可以实现这个功能了,小弟今天特此和大家分享一下。ajax上传实质上分为两种:
一、基于iframe异步提交数据,将form表单数据创建到一个页面隐藏的iframe,提交iframe里的数据。代码如下:
1.html页面引入
Ajax文件上传例子,JAVA版
用户名:
2.js处理
3.struts2后台处理:
@Controller
@Scope(“prototype”)
public class MyUpload {
private File fileToUpload;
private String username;
public File getFileToUpload() {
return fileToUpload;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public void setFileToUpload(File fileToUpload) {
this.fileToUpload = fileToUpload;
}
public void upload3() throws Exception{
String tmp = UUID.randomUUID().toString()+”.xls”; //注意这里文件后缀名我只是以xls演示。
File filex = new File(“f:\\upload”);
File fi = new File(filex,tmp);
FileUtils.copyFile(file,fi);
}
}
注:源码地址http://download.csdn.net/download/u010509052/9115721
二、基于html5的FileReader,提前是你的浏览器必须支持h5才可以
1.html代码:
2.struts2后台处理
@Controller
@Scope(“prototype”)
public class MyUpload {
private String urlData;
public String getUrlData() {
return urlData;
}
public void setUrlData(String urlData) {
this.urlData = urlData;
}
public void uploadimg() throws Exception{
byte[] buf = urlData.getBytes(“ISO8859_1”); //根据自己的服务器的编码而定,utf-8或GBK,否则生成的文件的编码不对。
OutputStream out = new FileOutputStream(new File(“f://xxx.jpg”));//这里的文件后缀名后天从前台传过来,我这里就写死了。
out.write(buf);
out.flush();
out.close();
System.out.println(urlData+”=====>”);
}
}
还没有评论,来说两句吧...