zoukankan      html  css  js  c++  java
  • jsp简单上传

    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>

    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>

  • 相关阅读:
    4-Pandas数据预处理之数据转换(df.map()、df.replace())
    4-Pandas数据预处理之离散化、面元划分(等距pd.cut()、等频pd.pcut()))
    4-Pandas数据预处理之排序(df.sort_index()、df.sort_values()、随机重排、随机采样)
    问题汇总
    4-Pandas数据预处理之数据融合(pd.merge()、df.join()、df.combine_first()详解)
    4-Pandas数据预处理之数据合并与轴向连接(pd.concat()的详解)
    3-Pandas数据初探索之如何查找存在缺失值的行(any与all详解)
    3-Pandas数据初探索之索引调整方法
    3-Pandas数据初探索之缺失值处理与丢弃数据(填充fillna()、删除drop()、drop_duplicates()、dropna())
    3-Pandas数据初探索之常用的描述性统计函数、汇总函数
  • 原文地址:https://www.cnblogs.com/nafio/p/9137753.html
Copyright © 2011-2022 走看看