已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ajax实现文件上传以及进度条显示 东海 陈光剑 20120815 10 / 10Ajax实现文件上传以及进度条显示东海 陈光剑 20120815Upfile.html var xmlHttp; var bar_color = green; var span_id = block; var clear = function createXMLHttpRequest() /创建XMLHttpRequest对象 if (window.ActiveXObject) xmlHttp = new ActiveXObject(Microsoft.XMLHTTP); else if (window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); function goUpFile()var obj=document.getElementById(file1);if(obj.value = )alert(请选择需要上传的文件);return false; createXMLHttpRequest(); checkDiv(); var url = uploadbar.jsp?task=create; /设置处理文件上传的服务器地址 var button = document.getElementById(go); button.disabled = true; xmlHttp.open(GET, url, true); /发送请求 xmlHttp.onreadystatechange = goCallback; /设置回调函数 xmlHttp.send(null); function goCallback() if (xmlHttp.readyState = 4) if (xmlHttp.status = 200) setTimeout(pollServer(), 200); function pollServer() createXMLHttpRequest(); var url = uploadbar.jsp?task=poll; /设置处理进度条的服务器地址 xmlHttp.open(GET, url, true); xmlHttp.onreadystatechange = pollCallback; xmlHttp.send(null); function pollCallback() /实现进度条 if (xmlHttp.readyState = 4) if (xmlHttp.status = 200) var percent_complete = xmlHttp.responseXML.getElementsByTagName(percent)0.firstChild.data; var index = processResult(percent_complete); for (var i = 1; i index & next_cell = 10) document.getElementById(block + next_cell).innerHTML = percent_complete + %; if (index 10) setTimeout(pollServer(), 200); else document.getElementById(complete).innerHTML = 完成; document.getElementById(go).disabled = false;upfileform.enctype=multipart/form-data;upfileform.action=upfile.jsp;upfileform.submit(); function processResult(percent_complete) var ind; if (percent_complete.length = 1) ind = 1; else if (percent_complete.length = 2) ind = percent_complete.substring(0, 1); else ind = 10; return ind; function checkDiv() var progress_bar = document.getElementById(progressBar); if (progress_bar.style.visibility = visible) clearBar(); document.getElementById(complete).innerHTML = ; else progress_bar.style.visibility = visible function clearBar() for (var i = 1; i 11; i+) var elem = document.getElementById(block + i); elem.innerHTML = clear; elem.style.backgroundColor = white; 实现文件上传进度条 uploadbar.jsp% String task = request.getParameter(task); /获得参数值 String res = ; if (task.equals(create) res = 1; counter = 1; else String percent = ; switch (counter) case 1: percent = 10; break; case 2: percent = 20; break; case 3: percent = 30; break; case 4: percent = 40; break; case 5: percent = 50; break; case 6: percent = 60; break; case 7: percent = 70; break;case 8: percent = 80; break; case 9: percent = 90; break; case 10: percent = 100; break; counter+; res = + percent + ; response.setContentType(text/xml); /设置内容类型 response.setHeader(Cache-Control, no-cache); out.println(); out.println(res); out.println(); %upfile.jsp = 0) in = new DataInputStream(request.getInputStream(); /读入上传的数据 int formDataLength = request.getContentLength(); if(formDataLength MAX_SIZE) out.println(上传的文件字节数不可以超过 + MAX_SIZE + ); return; byte dataBytes = new byteformDataLength; /保存上传文件的数据 int byteRead = 0; int totalBytesRead = 0; while(totalBytesRead formDataLength) /上传的数据保存在byte数组 byteRead = in.read(dataBytes,totalBytesRead,formDataLength); totalBytesRead += byteRead; String file = new String(dataBytes); /根据byte数组创建字符串 String saveFile = file.substring(file.indexOf(filename=) + 10); /取得上传的数据的文件名 saveFile = saveFile.substring(0,saveFile.indexOf(n); saveFile = saveFile.substring(saveFile.lastIndexOf() + 1,saveFile.indexOf(); int lastIndex = contentType.lastIndexOf(=); String boundary = contentType.substring(lastIndex + 1,contentType.length(); String fileName = rootPath + saveFile; int pos; pos = file.indexOf(filename=); pos = file.indexOf(n,pos) + 1; pos = file.indexOf(n,pos) + 1; pos = file.indexOf(n,pos) + 1; int boundaryLocation = file.indexOf(boundary,pos) - 4; int startPos = (file.substring(0,pos).getBytes().length;/取得文件数据的开始的位置 int endPos = (file.substring(0,boundaryLocation).getBytes().length; File checkFile = new File(fileName); if(checkFile.exists() out.println(文件已经存在,请重新上传); return ; File fileDir = new File(rootPath); if(!fileDir.exists() fileDir.mkdirs(); fileOut = new FileOutputStream(fileName); fileOut.write(dataBytes,startPos,(endPos - startPos); fileOut.close(); out.println(文件上传成功!); else String content = request.getContentType(); out.println(上传的数据类型不是是multipart/form-data); catch(Exception ex) throw new ServletException(ex.getMessage(); % request.setCharacterEncoding(utf-8); int MAX_SIZE = 102400 * 102400; /设置上传文件的最大值 String rootPath; DataInputStream in = null; FileOutputStream fileOut = null; String remoteAddr = request.getRemoteAddr(); String serverName = request.getServerName(); String realPath = request.getRealPath(serverName); realPath = realPath.substring(0,realPath.lastIndexOf(); rootPath = realPath + upload;上传的文件的保存路径:Tomcat Serverwebappproject_nameupload File fileDir = new File(rootPath); if(!fileDir.exists() fileDir.mkdirs(); /创建文件目录 fileOut = new FileOutputStream(fileName); fileOut.write(dataBytes,startPos,(endPos - startPos); fileOut.close(); /文件读写流out.println(文件上传成功!); else String content = request.getContentType();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度执法资格试题含完整答案详解【各地真题】
- 2024-2025学年度安徽林业职业技术学院妇产护理期末模考模拟试题及参考答案详解【模拟题】
- 心肌梗死患者的用药护理
- 2024-2025学年度冶金工业技能鉴定经典例题带答案详解(精练)
- 2024-2025学年度电梯考试测试卷(达标题)附答案详解
- 2024-2025学年度云南能源职业技术学院单招《物理》考前冲刺测试卷含答案详解(基础题)
- 2024-2025学年农村信用社招聘考试能力检测试卷带答案详解(典型题)
- 2024-2025学年度中医执业医师模拟题库附参考答案详解(B卷)
- 2024-2025学年医师定期考核考试综合练习及完整答案详解【夺冠】
- 2024-2025学年度电工考前冲刺练习试题及参考答案详解(巩固)
- 2026年滁州职业技术学院单招综合素质考试题库附答案详解
- 2026春统编版三年级下册道德与法治每课知识点清单
- 2026陕煤集团榆林化学有限责任公司招聘(162人)考试备考题库及答案解析
- 退役军人保密教育
- MHC与移植免疫课件
- 部编四年级语文下册 全册教案 (表格式)
- GB/T 26216.2-2019高压直流输电系统直流电流测量装置第2部分:电磁式直流电流测量装置
- 《花卉生产技术》课件第十一章 水生花卉
- 国家免费孕前优生健康检查项目技术服务
- 规模经济与范围经济 课件
- 创业引导-与企业名家面对面答案
评论
0/150
提交评论