FileItem API详解及演示

FileItem
	1.isFormField
		用于判断是否是上传组件.
		如果是<input type="file">返回的就是false,否则返回true.
		
	2.getFieldName();
			返回值String,得到组件名称  <input name="">
	3.getName();
		返回值是String,得到的是上传文件的名称.
		注意:浏览器不同,它们得到的效果不一样。
			1.包含全路径名称  例如: C:\Users\Administrator\Desktop\a.txt
			2.只包含上传文件名称 例如:a.txt
			
	4.getString();
		这个方法可以获取非上传组件的内容,相当于  getParameter方法作用。
		
		问题:如果信息是中文,会出现乱码,解决方案  getString("utf-8");
		
		如果是上传组件,上传的文件是文本文件,可以获取到文件文件的内容。
		但是如果不是文件文件,例如:是一张图片,这样获取合适吗?
			
	5.获取上传文件的内容,保存到服务器端.
		item.getInputStream();它是用于读取上传文件内容的输入流.
		使用文件复制操作就可以完成文件上传。
		
	6.删除临时文件
		item.delete();
		
------------------------------------------------------------
总结:关于文件上传时的乱码问题:
	1.上传文件名称乱码
		ServletFileUpload.setHeaderEncoding("utf-8");				
	2.非上传组件内容乱码
		FileItem.getString("utf-8");
		
	3.思考:上传文件信息是否会乱码,需要解决吗?
		不需要解决,因为我们在上传时,使用的字节流来进行复制。
FileItem 表示文件上传表单中 每个数据部分 
boolean isFormField()  判断该数据项是否为文件上传项,true 不是文件上传 false 是文件上传
if(fileItem.isFormField()){
   // 不是上传项
   java.lang.String getFieldName()  获得普通表单项name属性
   java.lang.String getString() / java.lang.String getString(java.lang.String encoding) 获
得普通表单项value属性 传入编码集用来解决输入value乱码 
}else{
   // 是上传项
   java.lang.String getName() 获得上传文件名 (注意IE6存在路径)
   java.io.InputStream 	getInputStream() 获得上传文件内容输入流
   // 上传文件
   void delete()  删除临时文件(删除时,必须要管理输入输出流)
}

注意事项:因为文件上传表单采用编码方式multipart/form-data 与传统url编码不同,所有getParameter 
方法不能使用 setCharacterEncoding 无法解决输入项乱码问题

发布了2417 篇原创文章 · 获赞 62 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/105155823