1.如何实现文件上传功能:
要实现Web开发中的文件上传功能,通常需要完成两步操作:
一 在web页面中添加上传输入项;
二 在Servlet中读取上传文件的数据,并保存在本地硬盘中;
由于大多数文件的上传都是通过表单的形式提交给服务器的,因此,要想在程序中实现文件上传的功能,首先要创建一个用于提交上传文件的表单页面。在页面中,需要使用<input type="file">标签在Web页面中添加文件上传输入项。
<input type="file">标签使用有以下两个注意事项:
1.必须要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。
2.必须将表单页面的method属性设置为post方式,enctype属性设置为“multipart/form-doat”类型。
实例代码:
2.文件上传的相关API
Fileltem接口在Commons-FileUpload组件中被实现,其主要用于封装单个表单字段元素的数据,一个表单字段元素对应一个Fileltem对象。Commons-FileUpload组件在处理文件上传的过程中,将每一个表单域封装在一个Fileletem对象中。
Filetem类实现了Serializable接口,因此,支持序列化操作。在Filetem类中定义了许多获取表单字段元素的方法,如下:
(1)boolean isFromField()方法
(2)String getName()方法
(3)String getFiledName()方法
(4)void write(File file)方法
(5)String getString()方法
(6)String getContentType()方法
(7)bollean islnMemory()方法
(8)void delete()方法
(9)inputStream getlnputStream()方法
(10)long getSize()方法
2.2 DiskFileltemFactory类
DiskFileltemFactory类请求消息实体中的每一个文件封装成单独的Fileltem对象。如果上传的文件比较小,将直接保存在内存中,如果上传的文件比较大,则会以临时文件的形式,保存在磁盘的临时文件夹中。默认情况下,文件保存在内存还是硬盘临时文件夹的临界值是10204,即10KB。DiskFileltemFactory类中包含两个构造方法:
1.DiskFileltemFactory():采用默认临界值和系统临时文件夹构造文件项工厂对象
2.DiskFileltemFactory(int size Threshold,Filerepository):采用参数指定临界值和系统临时文件夹构造文件项工厂对象
其中第二个构造方法需要传递两个参数,参数sizeThreshoid代表文件保存在内存还是磁盘临时文件夹的临界值,参数repository表示临时文件的存储路径。
2.3 Se