无为清净楼资源网 Design By www.qnjia.com
本文实例讲述了JSP实现快速上传文件的方法。分享给大家供大家参考。具体如下:
这里演示JSP不使用第三方库,实现快速上传文件的功能
1. FileUpload.java:
"C://"; public FileUpload() { fpath="C://"; in=null; } public void setInputStream(ServletInputStream in) { this.in=in; } public void setFpath(String p) { this.fpath=p; } public String getFpath() { return fpath; } public String getParameter() { String r=null; try { r=getParameter(in); } catch (Exception e) { e.printStackTrace(); } return r; } public long getFileUpload() { long r=-1; try { r=getFileUpload(in,fpath); } catch (Exception e) { e.printStackTrace(); } return r; } public String getParameter(ServletInputStream in)// 只能按顺序提取 throws Exception { int l = 0; byte[] b = new byte[1024]; l = in.readLine(b, 0, b.length);// 依次是读取属性的开始符、名称、属性值的类型、属性的值 String si = new String(b); if (si.startsWith("----------------------------")) {// 表示是从开始符开始读,否则应为刚读取文件后的一个属性,此时应少读一次 l = in.readLine(b, 0, b.length); } l = in.readLine(b, 0, b.length); l = in.readLine(b, 0, b.length); String value = new String(b, 0, l); return value; } public long getFileUpload(ServletInputStream in, String fpath)// 需要提供输入流和存储路径 throws Exception { // out.println("文件信息:<br>"); long begin = System.currentTimeMillis();// 传送时间计时开始 int l = 0; byte[] b = new byte[1024]; l = in.readLine(b, 0, b.length); String sign = new String(b, 0, l);// eg.-----------------------------7d9dd29630a34 l = in.readLine(b, 0, b.length); String info = new String(b, 0, l);// eg.Content-Disposition:form-data; // name="file"; l = in.readLine(b, 0, b.length); // String type=new // String(b,0,l);//eg.Content-Type:application/octet-stream(程序文件) l = in.readLine(b, 0, b.length); // String nulll=new String(b,0,l);//此值应为空 int nIndex = info.toLowerCase().indexOf("filename=\""); int nLastIndex = info.toLowerCase().indexOf("\"", nIndex + 10); String filepath = info.substring(nIndex + 10, nLastIndex); int na = filepath.lastIndexOf("\\"); String filename = filepath.substring(na + 1); // out.println("文件绝对路径:"+filepath+"<br>"); // out.println("文件名:"+filename+"<br><br>"); String path=fpath + filename; File fi = new File(path);// 建立目标文件 if (!fi.exists()&&!fi.createNewFile()) return -2; BufferedOutputStream f = new BufferedOutputStream(new FileOutputStream( fi)); while ((l = in.readLine(b, 0, b.length)) > 0) { if (l == sign.length()) { String sign1 = new String(b, 0, sign.length()); // out.println(sign1+"<br>"); if (sign1.startsWith(sign))// 比对是否文件已传完 break; } f.write(b, 0, l); f.flush(); } f.flush(); f.close(); long end = System.currentTimeMillis();// 传送时间计时结束 // out.println("上传文件用时:"+(end-begin)+"毫秒<br>"); return end - begin; } }
2. submitFile.jsp:
"java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'submitFile.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script language="javascript"> function check() { if (document.form2.name.value==""){ alert("姓名不能为空!!"); document.form2.name.focus(); return false; } if (document.form2.file.value==""){ alert("文件不能为空!!"); return false; } return true; } </script> </head> <body> <br> <form method="post" name="form2" enctype="MULTIPART/FORM-DATA" action="AnswerFile.jsp"> <br> <p align="center"> <br> </p> <table width="530" border="1" bgcolor="#c0c0c0" align="center" height="91"> <tbody> <tr> <td valign="top" align="right"> 姓名 <br> </td> <td valign="top"> <input type="text" name="name"> </td> </tr> <tr> <td align="right"> 文件 </td> <td align="left"> <input type="file" name="file"> </td> </tr> <tr> <td valign="top" align="right"> 文件类型 <br> </td> <td valign="top" align="left"> <select size="1" name="leixing"> <option selected value="作业"> 作业 </option> <option value="课程设计"> 课程设计 </option> <option value="论文"> 论文 </option> </select> </td> </tr> <tr> <td align="right"> <input type="Submit" value="上传" name="button2" onclick="return(check());"> </td> <td align="left"> <input type="reset" value="重置" name="button3"> </td> </tr> </tbody> </table> <p> <br> <br> </p> </form> </body> </html>
3. AnswerFile.jsp:
"htmlcode">
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'AnswerFile.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <jsp:useBean id="upload" scope="session" class="FileUpload.FileUpload"/> <jsp:setProperty name="upload" value="C://" property="fpath"/> <% ServletInputStream in = request.getInputStream(); upload.setInputStream(in); String nam = upload.getParameter(); out.println("姓名:" + nam + "<br><br>"); long time = upload.getFileUpload(); out.println("文件上传完毕,总共耗时:" + time + "毫秒<br>"); String leixing = upload.getParameter(); out.println("文件类型:" + leixing + "<br>"); in.close(); %> <br> <div align="right"> <a href="index.jsp">回到首页</a> </div> </body> </html>
希望本文所述对大家的JSP程序设计有所帮助。
标签:
JSP,上传文件
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 《怪猎荒野》PS5Pro主机版对比:B测性能都不稳定
- 黄宝欣.1992-黄宝欣金装精选2CD【HOMERUN】【WAV+CUE】
- 群星.1996-宝丽金流行爆弹精丫宝丽金】【WAV+CUE】
- 杜德伟.2005-独领风骚新歌精选辑3CD【滚石】【WAV+CUE】
- 安与骑兵《心无疆界》[低速原抓WAV+CUE]
- 柏菲唱片-群星〈胭花四乐〉2CD[原抓WAV+CUE]
- 金典女声发烧靓曲《ClassicBeautifulSound》2CD[低速原抓WAV+CUE]
- 王杰1992《封锁我一生》粤语专辑[WAV+CUE][1G]
- 群星《一人一首成名曲 (欧美篇)》6CD[WAV/MP3][7.39G]
- 东来东往2004《回到我身边·别说我的眼泪你无所谓》先之唱片[WAV+CUE][1G]
- MF唱片-《宝马[在真HD路上]》2CD[低速原抓WAV+CUE]
- 李娜《相信我》新时代[WAV+CUE]
- 2019明达发烧碟MasterSuperiorAudiophile[WAV+CUE]
- 蔡幸娟.1993-相爱容易相处难【飞碟】【WAV+CUE】
- 陆虎.2024-是否愿意成为我的全世界【Hikoon】【FLAC分轨】