本文實例講述了JSP實現(xiàn)快速上傳文件的方法。分享給大家供大家參考。具體如下:
這里演示JSP不使用第三方庫,實現(xiàn)快速上傳文件的功能
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("----------------------------")) {// 表示是從開始符開始讀,否則應(yīng)為剛讀取文件后的一個屬性,此時應(yīng)少讀一次 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);//此值應(yīng)為空 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);// 建立目標(biāo)文件 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();// 傳送時間計時結(jié)束 // 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"> nbsp; 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"> nbsp; 文件 /td> td align="left"> nbsp; 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="作業(yè)"> 作業(yè) /option> option value="課程設(shè)計"> 課程設(shè)計 /option> option value="論文"> 論文 /option> /select> /td> /tr> tr> td align="right"> input type="Submit" value="上傳" name="button2" onclick="return(check());"> /td> td align="left"> nbsp; input type="reset" value="重置" name="button3"> /td> /tr> /tbody> /table> p> nbsp; br> br> nbsp; /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程序設(shè)計有所幫助。
標(biāo)簽:西藏 云浮 貴州 宿州 紅河 江西 青島 丹東
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JSP實現(xiàn)快速上傳文件的方法》,本文關(guān)鍵詞 JSP,實現(xiàn),快速,上傳,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。