. 你在html页面中写下面的语句就可以把文件数据传到servlet中 <%@page contentType="text/html;charset=gb2312"%> . 在sevelt的代码这样写的它调用FileLoad这个类来做文件上传 package lh; /** * 此处插入类型描述 * 创建日期( ::) * @author无是无非 */ import javaxservlethttp*; import javaxservlet*; import javautil*; import javaio*; import javaxservletServletInputStream; public class FLServlet extends javaxservlethttpHttpServlet { /** * FLServlet 构造子注解 */ public FLServlet() { super(); } protected void doGet( javaxservlethttpHttpServletRequest request javaxservlethttpHttpServletResponse response) throws javaxservletServletException javaioIOException { doPost(request response); } protected void doPost(HttpServletRequest request HttpServletResponse response) throws javaxservletServletException javaioIOException { //上传文件 FileLoad fl = new FileLoad(); flprepareForFile(request); } } FileLoad类的代码如下 package lh; /** * 此处插入类型描述 * 创建日期( ::) * @author无是无非 */ import javaxservlethttp*; import javaxservlet*; import javautil*; import javaio*; import javaxservletServletInputStream; public class FileLoad { public ServletInputStream sis = null; public byte[] b = new byte[]; //字节流存放数组 public String sourcefile = ; //源文件名 private int count = ; //已传输文件数目 public double size = DoubleMAX_VALUE; //限制大小 public String suffix = ; //文件后缀名 public String objectfilename = ; //目标文件名 public String objectpath = e:\\; //目标文件目录 public boolean successful = true; /** * FileLoad 构造子注解 */ public FileLoad() { super(); } /** * 此处插入方法描述 * 创建日期( ::) * @param response javaxservlethttpHttpServletResponse */ public void prepareForFile(HttpServletRequest request) { try { sis = requestgetInputStream(); int a = ; int k = ; String s = ; while ((a = sisreadLine(b blength)) != ) //判断是否从文件中读到内容 { s = new String(b a); if ((k = sindexOf(filename=)) != ) //传过来的每个文件中都有filename=这段文字 { s = ssubstring(k + ); k = sindexOf(\); s = ssubstring( k); //得到了文件全部名称 sourcefile = s; k = slastIndexOf(); suffix = ssubstring(k + ); //得到了文件的扩展名 transferFile(); } } } catch (Exception ex) { exprintStackTrace(); } } /** * 此处插入方法描述 * 创建日期( ::) * @param i int */ public void transferFile() { String x = LongtoString(new javautilDate()getTime()); try { objectfilename = x + + suffix; FileOutputStream out = new FileOutputStream(objectpath + objectfilename); int a = ; int k = ; long hastransfered = ; //标示已经传输的字节数 String s = ; while ((a = sisreadLine(b blength)) != ) { s = new String(b a); if ((k = sindexOf(ContentType:)) != ) break; } sisreadLine(b blength); while ((a = sisreadLine(b blength)) != ) { s = new String(b a); if ((b[] == ) && (b[] == ) && (b[] == ) && (b[] == ) && (b[] == )) break; outwrite(b a); hastransfered += a; if (hastransfered >= ) { Systemoutprintln(文件超大了!!); successful = false; break; } ++count; } if (!successful) { //如果传送文件没有成功就删除掉这个文件 outclose(); sisclose(); String tem = objectpath + objectfilename; File del = new File(tem); deldelete(); } outclose(); } catch (IOException ioe) { Systemoutprintln(IOException!!); } } } |