uploadExample.jsp 調用 doUpload.jsp,需要兩個文件一起
1、uploadExample.jsp
<%@ page contentType="text/html;charset=gb2312"%><html><title><%= application.getServerInfo() %></title><body>上傳文件程序應用示例<form action="doUpload.jsp" method="post" enctype="multipart/form-data"><%-- 類型enctype用multipart/form-data,這樣可以把文件中的數據作為流式數據上傳,不管是什么文件類型,均可上傳。--%>請選擇要上傳的文件<input type="file" name="upfile" size="50"><input type="submit" value="提交"></form></body></html>2、doUpload.jsp<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.io.*"%><%@ page import="java.util.*"%><%@ page import="javax.servlet.*"%><%@ page import="javax.servlet.http.*"%><html><head><title>upFile</title></head><body bgcolor="#ffffff"><%//定義上載文件的最大字節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//";//取得客戶端上傳的數據類型String contentType = request.getContentType();try{if(contentType.indexOf("multipart/form-data") >= 0){//讀入上傳的數據in = new DataInputStream(request.getInputStream());int formDataLength = request.getContentLength();if(formDataLength > MAX_SIZE){out.PRintln("<P>上傳的文件字節數不可以超過" + MAX_SIZE + "</p>");return;}//保存上傳文件的數據byte dataBytes[] = new byte[formDataLength];int byteRead = 0;int totalBytesRead = 0;//上傳的數據保存在byte數組while(totalBytesRead < formDataLength){byteRead = in.read(dataBytes,totalBytesRead,formDataLength);totalBytesRead += byteRead;}//根據byte數組創建字符串String file = new String(dataBytes);//out.println(file);//取得上傳的數據的文件名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;//out.print(fileName);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;//out.println(boundaryLocation);//取得文件數據的開始的位置int startPos = ((file.substring(0,pos)).getBytes()).length;//out.println(startPos);//取得文件數據的結束的位置int endPos = ((file.substring(0,boundaryLocation)).getBytes()).length;//out.println(endPos);//檢查上載文件是否存在File checkFile = new File(fileName);if(checkFile.exists()){out.println("<p>" + saveFile + "文件已經存在.</p>");}//檢查上載文件的目錄是否存在File fileDir = new File(rootPath);if(!fileDir.exists()){fileDir.mkdirs();}//創建文件的寫出類fileOut = new FileOutputStream(fileName);//保存文件的數據fileOut.write(dataBytes,startPos,(endPos - startPos));fileOut.close();out.println(saveFile + "文件成功上載.</p>");}else{String content = request.getContentType();out.println("<p>上傳的數據類型不是multipart/form-data</p>");}}catch(Exception ex){throw new ServletException(ex.getMessage());}%></body></html>文件下載功能,參考文章:http://blog.csdn.net/guomutian911/article/details/59211606。有問題,可聯系:玉林師范學院,郭立,Q:316190672
新聞熱點
疑難解答