后台代码 package com.hitdy.dyda.action; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.text.ParseException; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; import org.apache.struts2.ServletActionContext; import com.hitdy.dyda.service.IFileUploadService; import com.opensymphony.xwork2.ActionContext; public class FileUploadAction { //上传用 private File pic; private String picFileName; private String picContentType; private InputStream inputStream; private String gys; private String data=""; private IFileUploadService fileUploadService; /** * 功能:向前台返回的数据 * @author 闫加盼 * @return null * @param data 要向前台写入的对象 */ public void wirterdata(String data){ PrintWriter out = null; try { HttpServletResponse response = ServletActionContext.getResponse(); out = response.getWriter(); out.print(data); } catch (IOException e) { // Todo Auto-generated catch block e.printstacktrace(); }finally{ out.flush(); out.close(); } } /** * 功能:判断是否是分析对象 * @author 闫加盼 * @return null * @throws IOException * @throws ParseException */ public void isAnalysisobject(){ String selfnum = picFileName.substring(0,11); String isAnalysisobject = this.fileUploadService.getIsAnalysisobject(selfnum); System.out.println(isAnalysisobject); if("yes".equals(isAnalysisobject)){ //是分析对象可以上传 this.upload(); }else{ //不是分析对象 this.wirterdata("<script>parent.returnback('no');</script>"); } } /** * 功能:文件上传 * @author 闫加盼 * @return null * @throws IOException * @throws ParseException */ public void upload(){ String isok; String errordata = "<script>parent.callback('no');</script>"; String successdata = "<script>parent.callback('yes');</script>"; try { /* //测试基站数据导入,和归属地数据导入,图片动用 try { Thread.sleep(5000); } catch (InterruptedException e) { // Todo Auto-generated catch block e.printstacktrace(); } */ //服务器的路径 String realpath = ServletActionContext.getServletContext().getRealPath("/shuju"); //例如-------D:\apache-tomcat-6.0.18\webapps\struts2_upload\shuju String lj = realpath+"\\"+picFileName; //列如------ D:\apache-tomcat-7.0.47\webapps\dyda\shuju\15636139999[通话详单]查询_1_1.xls if (pic != null) { File savefile = new File(new File(realpath),picFileName); if (!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs(); FileUtils.copyFile(pic,savefile); ActionContext.getContext().put("message","文件上传成功"); } System.out.println("lj:=="+lj); if("lt".equals(gys)){ //联通数据导入 isok = this.fileUploadService.daorult(lj,picFileName); if("no".equals(isok)){ this.wirterdata(errordata); }else{ this.wirterdata(successdata); } }else if("yd".equals(gys)){ //移动数据导入 isok = this.fileUploadService.daoruyd(lj,picFileName); if("no".equals(isok)){ this.wirterdata(errordata); }else{ this.wirterdata(successdata); } }else if("gsd".equals(gys)){ //归属地的数据导入 isok = this.fileUploadService.daorugsd(lj); if("no".equals(isok)){ this.wirterdata(errordata); }else{ this.wirterdata(successdata); } }else if("jz".equals(gys)){ //基站数据导入到数据库 isok = this.fileUploadService.jzUpload(lj); if("no".equals(isok)){ this.wirterdata(errordata); }else{ this.wirterdata(successdata); } }else{ //电信数据导入 isok = this.fileUploadService.daorudx(lj); if("no".equals(isok)){ this.wirterdata(errordata); }else{ this.wirterdata(successdata); } } } catch (IOException e) { // Todo Auto-generated catch block e.printstacktrace(); } catch (ParseException e) { // Todo Auto-generated catch block e.printstacktrace(); } } public File getPic() { return pic; } public void setPic(File pic) { this.pic = pic; } public String getPicFileName() { return picFileName; } public void setPicFileName(String picFileName) { this.picFileName = picFileName; } public String getPicContentType() { return picContentType; } public void setPicContentType(String picContentType) { this.picContentType = picContentType; } public InputStream getInputStream() { return inputStream; } public void setInputStream(InputStream inputStream) { this.inputStream = inputStream; } public String getGys() { return gys; } public void setGys(String gys) { this.gys = gys; } public String getData() { return data; } public void setData(String data) { this.data = data; } public IFileUploadService getFileUploadService() { return fileUploadService; } public void setFileUploadService(IFileUploadService fileUploadService) { this.fileUploadService = fileUploadService; } }
使用ajax上传文件方法 众所周知ajax是使用了浏览器内部的XmlHttpRequest对象来传输XML数据的。既然是Xml的数据传输,那么传输的数据肯定是文本的,而文件上传则需要传输二进制的数据,显然用ajax是不可能的。 这里要说的是用ajax上传文件其实只是类似ajax的那种操作,实际上并没有用到xmlhttprequest对象,对于用户来说是不管使用的什么技术,他们要的是流程简便。客户有个需求是需要在表单操作时点击浏览文件后判断文件是否合法,以及其是否超过上传的限制大小,并且要考虑到不同浏览器兼容。开始准备找javascript 的html object{input{file}}对象,发现没有兼容的对象,于是被迫使用伪ajax。 我的思路和方法是: 1.添加一个隐藏的iframe和ajax_callback函数 2.当用户行为触发时改变form的action值并且target到隐藏的iframe 3.iframe中的伪ajax处理结束后调用parent.ajax_callback来处理结果 4.在ajax_callback中还原form的原始action值和target值 example:
<form name="scform" action="" method="post" enctype="multipart/form-data" target="screct_frame"> <div class="abg"> <div class="at">选择号码所属地数据文件</div> <div class="atimg"><img src="../images/at1.jpg"></div> <div class="atext"><input id="filename" type="file" name="pic" size="30"/></div> <div class="abtn"><input id="abtn" name="" type="button" value="" class="abtn" onClick="daoru()"/></div> <div id="agif" class="agif" style="display:none;"><img src="../images/load.gif"></div> </div> </form> <iframe name="screct_frame" style="display:none;"></iframe><script language="javascript"> function callback(result) { if (result == "no") { alert("导入的数据有错误,请上传正确数据!"); }else{ alert("文件上传成功"); } $("#agif").css("display","none"); $("#abtn").one("click",daoru); $("#filename").removeAttr("disabled"); } function daoru(){ //让虚线消失 this.blur(); var filename = $("#filename").val(); var dian = filename.lastIndexOf('.'); //截取后的文件扩展名 var kuozhanming = filename.substr(dian+1); if(kuozhanming=='accdb' || kuozhanming=='mdb'){ //显示那个小图片 $("#agif").css("display","block"); document.scform.action = "fileupload!upload.action?gys=gsd"; document.scform.submit(); $("#abtn").attr("onclick",""); $("#filename").attr("disabled","disabled"); }else{ alert("文件格式不正确,请选择access文件格式"); /* $("#agif").css("display","none"); $("#abtn").one("click",daoru); $("#filename").removeAttr("disabled"); */ } }</script>:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。