• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP实现快速上传文件的方法

    本文实例讲述了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">
            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="作业">
                      作业
                    /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">
                  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程序设计有所帮助。

    您可能感兴趣的文章:
    • Jsp页面实现文件上传下载类代码
    • JSP上传文件到指定位置实例代码
    • jsp中点击图片弹出文件上传界面及预览功能的实现
    • jsp实现文件上传下载的程序示例
    • AJAX和JSP实现的基于WEB的文件上传的进度控制代码
    • jsp文件上传与下载实例代码
    • jsp 文件上传浏览,支持ie6,ie7,ie8
    • jsp+ajax实现无刷新上传文件的方法
    • 用JSP编写文件上传
    • JSP实用教程之简易文件上传组件的实现方法(附源码)
    上一篇:jsp+mysql数据库操作常用方法实例总结
    下一篇:JSP上传excel及excel插入至数据库的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP实现快速上传文件的方法 JSP,实现,快速,上传,文件,