文件上传:
1)如果表单中有文件域元素,则提交方式只能使用post,并且需要将键值对传参改为流传输,语法enctype=“multipart/form-data”。
2)导入工具的jar包,两个分别是 commons-io.jar commons-fileupload.jar。
3)将不需要修改的代码直接粘贴代码中,粘贴的代码的功能:
创建产生解析请求对象的工厂–>给工厂创建临时仓库的位置–>通过工厂创建解析请求的对象–>解析请求–>List
4)遍历List,判断是普通表单域元素还是文件域元素,普通表单域元素取值,文件域元素取流信息。
需要掌握的API方法:
判断是否是普通表单域元素
item对象.isFormField() true普通 false文件
获取表单域的name值
item对象.getFieldName()
获取普通表单域的值
item对象.getString(编码集)
获取文件名
item对象.getName()
获取文件的流信息
item对象.getInputStream()
设置文件名的中文编码
解析请求的对象.setHeaderEncoding(编码集)
注意:
1)为了避免上传的文件同名,一般会在前面加上毫秒数或者是随机数。
2)如何判断用户是否上传文件,通过文件名判断,如果文件名为空字符串则表示未上传。