网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.http断点续传简单实现.
.Spring开发指南.
.[JAVA100例]072、欢迎进入Applet.
.利用Stripes实现Java Web开发.
.对于颓废的程序员我要说:.......
.J2ME学习笔记(5)—MIDlets中的图.
.weblogic81的服务配置.
.Eclipse 3.2 Java开发工具的新特.
.exec 方法.
.JavaWebStudio 2005新感觉.
.Spring 编程入门十大问题解答.
.编程必备经典:Java常见问题集锦.
.面向服务的架构(SOA)的推荐方法.
.Comment 语句.
.用J2SE 1.4进行Internet安全编程.
.技术交流:QuickTime流媒体和Java.
.java常用的加密,解密,数字签名等.
.关于六种Java异常处理程序的陋习.
.程序员杂谈:Ajax优于JSF的几个原.
.如何判断字符串是否为空串?.

文件上传的完全攻略

发表日期:2008-1-5



  1. 你在Html页面中写下面的语句就可以把文件数据传到servlet中。
  <%@page contentType="text/html;charset=gb2312"%>
  
  
  
  
  
  
  
  
  
  2. 在sevelt的代码这样写的,它调用FileLoad这个类来做文件上传。
    package fileload.com.lh;
  
  /**
  * 此处插入类型描述。
  * 创建日期:(2002-11-12 16:10:26)
  * @author:无是无非
  */
  import Javax.servlet.http.*;
  import javax.servlet.*;
  import java.util.*;
  import java.io.*;
  import javax.servlet.ServletInputStream;
  public class FLServlet extends javax.servlet.http.HttpServlet {
  
  /**
  * FLServlet 构造子注解。
  */
  public FLServlet() {
  super();
  }
  
  protected void doGet(
    javax.servlet.http.HttpServletRequest request,
    javax.servlet.http.HttpServletResponse response)
    throws javax.servlet.ServletException, java.io.IOException {
    doPost(request, response);
  
  }
  
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws javax.servlet.ServletException, java.io.IOException {
  
    //上传文件
  
    FileLoad fl = new FileLoad();
    fl.prepareForFile(request);
  
  }
  }
  
  3. FileLoad类的代码如下。
  package fileload.com.lh;
  
  /**
  * 此处插入类型描述。
  * 创建日期:(2002-11-12 16:14:10)
  * @author:无是无非
  */
  
  import javax.servlet.http.*;
  import javax.servlet.*;
  import java.util.*;
  import java.io.*;
  import javax.servlet.ServletInputStream;
  public class FileLoad {
  
    public ServletInputStream sis = null;
    public byte[] b = new byte[4096]; //字节流存放数组
    public String sourcefile = ""; //源文件名
    private int count = 0; //已传输文件数目
    public double size = Double.MAX_VALUE; //限制大小
    public String suffix = ""; //文件后缀名
    public String objectfilename = ""; //目标文件名
    public String objectpath = "e:\\"; //目标文件目录
    public boolean sUCcessful = true;
  
  /**
  * FileLoad 构造子注解。
  */
  public FileLoad() {
  super();
  }
  /**
  * 此处插入方法描述。
  * 创建日期:(2002-11-14 9:32:16)
  * @param response javax.servlet.http.HttpServletResponse
  */
  public void prepareForFile(HttpServletRequest request) {
    try {
      sis = request.getInputStream();
      int a = 0;
      int k = 0;
      String s = "";
      while ((a = sis.readLine(b, 0, b.length)) != -1)
  //判定是否从文件中读到内容
        {
        s = new String(b, 0, a);
        if ((k = s.indexOf("filename=")) != -1)
  //传过来的每个文件中都有"filename="这段文字
          {
          s = s.substring(k + 10);
          k = s.indexOf("\"");
          s = s.substring(0, k); //得到了文件全部名称
          sourcefile = s;
          k = s.lastIndexOf(".");
          suffix = s.substring(k + 1); //得到了文件的扩展名
          transferFile();
        }
  
      }
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  /**
  * 此处插入方法描述。
  * 创建日期:(2002-11-14 9:16:19)
  * @param i int
  */
  public void transferFile() {
    String x = Long.toString(new java.util.Date().getTime());
    try {
      objectfilename = x + "." + suffix;
      FileOutputStream out = new FileOutputStream(objectpath + objectfilename);
  
      int a = 0;
      int k = 0;
      long hastransfered = 0; //标示已经传输的字节数
      String s = "";
      while ((a = sis.readLine(b, 0, b.length)) != -1) {
        s = new String(b, 0, a);
        if ((k = s.indexOf("Content-Type:")) != -1)
          break;
      }
      sis.readLine(b, 0, b.length);
      while ((a = sis.readLine(b, 0, b.length)) != -1) {
        s = new String(b, 0, a);
        if ((b[0] == 45)
          && (b[1] == 45)
          && (b[2] == 45)
          && (b[3] == 45)
          && (b[4] == 45))
          break;
        out.write(b, 0, a);
        hastransfered += a;
        if (hastransfered >= 1000) {
  
          System.out.println("文件超大了!!");
          successful = false;
          break;
        }
        ++count;
  
      }
      if (!successful) {
        //假如传送文件没有成功就删除掉这个文件
        out.close();
        sis.close();
        String tem = objectpath + objectfilename;
        File del = new File(tem);
        del.delete();
      }
      out.close();
    } catch (IOException ioe) {
      System.out.println("IOException!!");
    }
  }
  }
上一篇:穿透Socks5 代理的UDP编程 人气:771
下一篇:Java电子商贸结构 人气:727
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐