• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > JSP实现快速上传文件的方法

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

作者:神仙 字体:[增加 减小] 来源:互联网 时间:2017-05-11

神仙通过本文主要向大家介绍了jsp实现文件上传,jsp实现文件下载,jsp实现多文件上传,jsp实现文件上传下载,jsp实现文件下载功能等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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;
  }
}

</div>

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">
         
        <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">
                文件
            </td>
            <td align="left">
               
              <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">
               
              <input type="reset" value="重置" name="button3">
            </td>
          </tr>
        </tbody>
      </table>
      <p>
         
        <br>
        <br>
         
      </p>
    </form>
  </body>
</html>

</div>

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-e



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • JSP组件commons-fileupload实现文件上传
  • JSP实现快速上传文件的方法
  • 用JSP编写文件上传

相关文章

  • 2017-05-11JSP生成WORD文档,EXCEL文档及PDF文档的方法
  • 2017-05-11jsp简单自定义标签的forEach遍历及转义字符示例
  • 2017-05-11JSP漏洞大观
  • 2017-05-11张孝祥JAVA全集 Ftp下载[100%能下载]
  • 2017-09-16Eclipse搭建EasyUI环境
  • 2017-05-11JSP由浅入深(12)—— 表单编辑
  • 2017-05-11jsp页面验证码demo
  • 2017-05-11Hibernate 查询方式总结
  • 2017-05-11jdbc连接数据库步骤深刻分析
  • 2017-05-11eclipse配置tomcat开发Dynamic Web Project环境图解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)
    • 在JSP中访问Oracle数据库
    • JDBC板块精华整理20051226
    • 解决JSP开发中Web程序显示中文三种方法
    • jsp中 ajax的get请求的中文乱码问题的解决方法
    • jsp 显示springmvc modelmap传递的对象详细介绍
    • JBuilder2005单元测试体验之测试配置
    • Cookie的使用及保存中文并用Cookie实现购物车功能
    • 两个JSP页面父页面获取子页面内容的两种方法
    • AJAX 自学练习 无刷新提交并修改数据库数据并显示

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有