<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術(shù)分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    上傳文件選取頁面:upload.html

    <html>
    <head>
    <title>文件上傳</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <body>
    <b>文件上傳</b></font></p>

    <form name="UploadForm" enctype="multipart/form-data" method="post" action="upload.jsp">
    <input type="file" name="File1" size="20" maxlength="20"> <br>
    <input type="submit"value="上傳">
    </form>

    </body>
    </html>

    上傳處理:upload.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">
    <center>
    <%
    //定義上載文件的最大字節(jié)
    int MAX_SIZE = 102400 * 102400;
    // 創(chuàng)建根路徑的保存變量
    String rootPath;

    //聲明文件讀入類
    DataInputStream in = null;
    FileOutputStream fileOut = null;
    //取得客戶端的網(wǎng)絡(luò)地址
    String remoteAddr = request.getRemoteAddr();
    out.print("request.getRemoteAddr()"+remoteAddr+"<br>");
    //獲得服務(wù)器的名字
    String serverName = request.getServerName();
    out.print("request.getServerName()="+serverName+"<br>");
    //取得jsp文件相對與根地址的地址
    out.print("request.getServletPath()="+request.getServletPath()+"<br>");
    //取得互聯(lián)網(wǎng)程序的絕對地址
    String realPath = request.getRealPath(serverName);
    out.println("request.getRealPath(serverName)="+realPath+"<br>");
    out.println("OK<br>");
    realPath = realPath.substring(0,realPath.lastIndexOf("\\"));
    //創(chuàng)建文件的保存目錄
    rootPath = realPath + "\\upload\\";
    //out.println(rootPath);
    //取得客戶端上傳的數(shù)據(jù)類型
    String contentType = request.getContentType();
    //out.println("<p>客戶端上傳的數(shù)據(jù)類型 = " + contentType + "</p>");
    try{
    if(contentType.indexOf("multipart/form-data") >= 0){
    //讀入上傳的數(shù)據(jù)
    in = new DataInputStream(request.getInputStream());
    int formDataLength = request.getContentLength();
    if(formDataLength > MAX_SIZE){
    out.println("<P>上傳的文件字節(jié)數(shù)不可以超過" + MAX_SIZE + "</p>");
    return;
    }
    //保存上傳文件的數(shù)據(jù)
    byte dataBytes[] = new byte[formDataLength];
    int byteRead = 0;
    int totalBytesRead = 0;
    //上傳的數(shù)據(jù)保存在byte數(shù)組
    while(totalBytesRead < formDataLength){
    byteRead = in.read(dataBytes,totalBytesRead,formDataLength);
    totalBytesRead += byteRead;
    }
    //根據(jù)byte數(shù)組創(chuàng)建字符串
    String file = new String(dataBytes);
    //out.println(file);
    //取得上傳的數(shù)據(jù)的文件名
    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("=");
    //取得數(shù)據(jù)的分隔字符串
    String boundary = contentType.substring(lastIndex + 1,contentType.length());
    //創(chuàng)建保存路徑的文件名
    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);
    //取得文件數(shù)據(jù)的開始的位置
    int startPos = ((file.substring(0,pos)).getBytes()).length;
    //out.println(startPos);
    //取得文件數(shù)據(jù)的結(jié)束的位置
    int endPos = ((file.substring(0,boundaryLocation)).getBytes()).length;
    //out.println(endPos);
    //檢查上載文件是否存在
    File checkFile = new File(fileName);
    if(checkFile.exists()){
    out.println("<p>" + saveFile + "文件已經(jīng)存在.</p>");
    return;
    }
    //檢查上載文件的目錄是否存在
    File fileDir = new File(rootPath);
    if(!fileDir.exists()){
    fileDir.mkdirs();
    }
    //創(chuàng)建文件的寫出類
    fileOut = new FileOutputStream(fileName);
    //保存文件的數(shù)據(jù)
    fileOut.write(dataBytes,startPos,(endPos - startPos));
    fileOut.close();
    out.println("<P>" + saveFile + "文件成功上載.</p>");
    }else{
    String content = request.getContentType();
    out.println("<p>上傳的數(shù)據(jù)類型不是是multipart/form-data</p>");
    }
    }catch(Exception ex){
    throw new ServletException(ex.getMessage());
    }
    %>
    </center>
    </body>
    </html>

    posted on 2010-01-19 21:27 小菜毛毛 閱讀(2497) 評論(2)  編輯  收藏 所屬分類: J2EE相關(guān)技術(shù)與框架

    Feedback

    # re: 純jsp的單個文件上載代碼 2014-02-27 10:51 葫蘆娃
    很不錯。謝  回復(fù)  更多評論
      

    # re: 純jsp的單個文件上載代碼 2014-02-27 10:52 葫蘆娃
    <hr>
    <br/>
    <s>  回復(fù)  更多評論
      

    主站蜘蛛池模板: 亚洲色欲一区二区三区在线观看| 亚洲欧洲自拍拍偷综合| 日韩免费在线视频| 亚洲人片在线观看天堂无码| 久久伊人亚洲AV无码网站| 免费成人福利视频| 噜噜噜亚洲色成人网站| 亚洲AV无码1区2区久久| 69成人免费视频无码专区| 9i9精品国产免费久久| 精品亚洲国产成人| 狠狠亚洲狠狠欧洲2019| 国产成在线观看免费视频| xvideos永久免费入口| 中文字幕亚洲综合小综合在线| 久久久久亚洲av成人无码电影| 免费无码AV片在线观看软件| 曰批全过程免费视频在线观看无码| 中国亚洲呦女专区| 久久精品国产亚洲av成人| 国产无遮挡吃胸膜奶免费看视频| 久久九九AV免费精品| 黄色三级三级免费看| 亚洲欧洲精品一区二区三区| 亚洲真人日本在线| 18禁超污无遮挡无码免费网站国产| 国产真人无码作爱免费视频| 国产成人精品久久亚洲高清不卡| 亚洲精品韩国美女在线| 精品久久久久久亚洲| 亚洲AV中文无码乱人伦| 国产精品成人免费一区二区| 91香蕉国产线观看免费全集| 中文字幕一区二区免费| 三年片在线观看免费观看大全中国| jiz zz在亚洲| 色老板亚洲视频免在线观| 久久久亚洲AV波多野结衣 | 国产一级一片免费播放i| 91福利视频免费观看| 免费福利电影在线观看|