文件的上传介绍:

一、什么是文件上传?

文件上传就是将客户端的资源通过网络数据传递到服务器


二、为什么要用文件上传?

使用上传文件的主要原因是一般上传的文件数据都很大


三、上传文件的本质:

文件上传的本质就是IO流的操作。服务器端通过流读取数据,然后对数据进行解析,得到上传文件的内容,然后保存在服务器端


四、客户端如何上传数据?

1.要有一个form标签,method=post请求因为提交的数据会比较大,所以使用post提交

2.form标签的encType属性值必须为multipart / form-date值

3.在form标签中使用input type=file添加上传的文件

4.编写服务器代码(Servlet程序)接收,处理上传的数据

encType=multipart / from-date表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼接,然后以二进制的形式发送给服务器


五、服务器如何处理数据?

1.用request对象获取请求信息

2.通过request的getInputStream()方法,可以读取到所有请求正文消息

3.操作IO流,将所需要的信息保存在服务器端


六、fileupload.jar包的使用

commons-fileupload.jar通常和cimmins-io.jar包一起使用,用来操作文件上传。

commons-fileupload.jar和commons-io.jar包中,常用的类:

ServletFileUpload类,用于解析上传的数据

FileItem类,表示每一个表单项

boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);

判断当前上传的数据格式是否是多端的格式

public List<FileItem>parseRequest(HttpServletRequest request)

解析上的数据

boolean FileItem.isFormField()

判断当前这个表单项,是否为普通表单项,还是上传的文件类型

true 表示普通类型的表单项

false 表示上传的文件类型

String FileItem.getFieldName()

获取表单项的name属性值

String FileItem.getString()

获取当前表单项的值

String FileItem.getName()

获取上传的文件名

void FileItem.write(file)