电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

文件上传的完全攻略


发布日期:2018/5/24
 

. 你在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!!);

}

}

}

上一篇:使你的窗体保留在桌面的最上面

下一篇:多网口的IP Network Multipathing failover