1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用apache.commons.fileupload 进行文件上传

使用apache.commons.fileupload 进行文件上传

时间:2022-03-29 12:13:36

相关推荐

使用apache.commons.fileupload 进行文件上传

一 主要API

1. DiskFileUpload类

DiskFileUpload类是Apache文件上传组件的核心类,应用程序开发人员通过这个类来与Apache文件上传组件进行交互。下面介绍DiskFileUpload类中的几个常用的重要方法。

1.1.setSizeMax方法

setSizeMax方法用于设置请求消息实体内容的最大允许大小,以防止客户端故意通过上传特大的文件来塞满服务器端的存储空间,单位为字节。其完整语法定义如下:

public void setSizeMax(longsizeMax)

如果请求消息中的实体内容的大小超过了setSizeMax方法的设置值,该方法将会抛出FileUploadException异常。

1.2.setSizeThreshold方法

setSizeThreshold方法用于设置是否使用临时文件保存解析出的数据的那个临界值,该方法传入的参数的单位是字节。其完整语法定义如下:

public void setSizeThreshold(intsizeThreshold)

1.3. setRepositoryPath方法

setRepositoryPath方法用于设置setSizeThreshold方法中提到的临时文件的存放目录,这里要求使用绝对路径。其完整语法定义如下:

public void setRepositoryPath(StringrepositoryPath)

如果不设置存放路径,那么临时文件将被储存在"java.io.tmpdir"这个JVM环境属性所指定的目录中,tomcat 5.5.9将这个属性设置为了“<tomcat安装目录>/temp/”目录。

1.4. parseRequest方法

parseRequest 方法是DiskFileUpload类的重要方法,它是对HTTP请求消息进行解析的入口方法,如果请求消息中的实体内容的类型不是“multipart/form-data”,该方法将抛出FileUploadException异常。parseRequest 方法解析出FORM表单中的每个字段的数据,并将它们分别包装成独立的FileItem对象,然后将这些FileItem对象加入进一个List类型的集合对象中返回。parseRequest 方法的完整语法定义如下:

public List parseRequest(HttpServletRequestreq)

parseRequest 方法还有一个重载方法,该方法集中处理上述所有方法的功能,其完整语法定义如下:

parseRequest(HttpServletRequestreq,intsizeThreshold,longsizeMax,

Stringpath)

这两个parseRequest方法都会抛出FileUploadException异常。

2. FileItem类

FileItem类用来封装单个表单字段元素的数据,一个表单字段元素对应一个FileItem对象,通过调用FileItem对象的方法可以获得相关表单字段元素的数据。下面介绍FileItem类中的几个常用的方法:

2.1. isFormField方法

isFormField方法用于判断FileItem类对象封装的数据是否属于一个普通表单字段,还是属于一个文件表单字段,如果是普通表单字段则返回true,否则返回false。该方法的完整语法定义如下:

public boolean isFormField()

2.2. getName方法

getName方法用于获得文件上传字段中的文件名,getName方法的完整语法定义如下:

public String getName()

注意:如果用户使用Windows系统上传文件,浏览器将传递该文件的完整路径,如果用户使用Linux或者Unix系统上传文件,浏览器将只传递该文件的名称部分。

2.3. write方法

write方法用于将FileItem对象中保存的主体内容保存到某个指定的文件中。如果FileItem对象中的主体内容是保存在某个临时文件中,该方法顺利完成后,临时文件有可能会被清除。该方法也可将普通表单字段内容写入到一个文件中,但它主要用途是将上传的文件内容保存在本地文件系统中。其完整语法定义如下:

public void write(Filefile)

二.上传实例

//Createafactoryfordisk-basedfileitems DiskFileItemFactoryfactory=newDiskFileItemFactory();//Setfactoryconstraints factory.setSizeThreshold(4096);//设置缓冲区大小,这里是4kb factory.setRepository(tempPathFile);//设置缓冲区目录 //Createanewfileuploadhandler ServletFileUploadupload=newServletFileUpload(factory);//Setoverallrequestsizeconstraint upload.setSizeMax(4*1024*1024);//设置最大文件尺寸,这里是4MB List<FileItem>items=upload.parseRequest(request);//得到所有的文件 Iterator<FileItem>i=items.iterator();while(i.hasNext()){FileItemfi=(FileItem)i.next();StringfileName=fi.getName();if(fileName!=null){FilefullFile=newFile(fi.getName());FilesavedFile=newFile(uploadPath,fullFile.getName());fi.write(savedFile);}}

reference:

http://zhangjunhd./113473/18331

/blog/more.asp?name=zhanglincon&id=31865

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。