JSP实现快速上传文件的方法
程序员文章站
2022-05-03 16:17:40
本文实例讲述了jsp实现快速上传文件的方法。分享给大家供大家参考。具体如下:
这里演示jsp不使用第三方库,实现快速上传文件的功能
1. fileupload.java...
本文实例讲述了jsp实现快速上传文件的方法。分享给大家供大家参考。具体如下:
这里演示jsp不使用第三方库,实现快速上传文件的功能
1. fileupload.java:
package fileupload; import java.io.bufferedoutputstream; import java.io.file; import java.io.fileoutputstream; import javax.servlet.servletinputstream; /** * */ /** * @author qch * */ public class fileupload { servletinputstream in=null; string fpath="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:
<%@ page language="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:
<%@ 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程序设计有所帮助。
上一篇: 一句话木马连接客户端
下一篇: ASP得到文件的大小类型最后修改时间