文件上传:允许客户将本地文件,上传到服务器端
应用:上传照片、上传新闻图片、上传附件
一、文件上传编程
1、在用户页面中添加上传输入项 (客户端页面操作)
<input type="file" />
注意事项:
1) 必须为文件上传input 提供name属性,否则文件上传内容不会被表单提交
2) 表单的提交是post (get提交数据在url地址上显示,有长度限制)
3) 设置enctype=multipart 使得文件上传编码 ----- MIME编码格式
2、在服务器端编写文件上传程序
通过request.getInputStream分析文件上传原理
常用文件上传API :
1) JSP独立开发年代 jsp-smartupload ---- JSP Model1
jspSmartUpload是一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。
2) JSP+Servlet 开发web应用 Apache commons-fileupload ---- JSP Model2
FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下面的文件上传功能,与常见的SmartUpload齐名。
3) Servlet3.0规范中提供对文件上传的支持
Apache commons-fileupload 使用
1) 去 http://commons.apache.org/fileupload/ 下载fileupload jar包
同时下载 commons-fileupload 和 commons-io 两个包 -------- fileupload依赖io包
2) 将jar包导入 web 工程WEB-INF/lib下
3) 编程实现
步骤一:获得DiskFileItemFactory 文件项工厂
步骤二:通过工厂 获得文件上传请求核心解析类 ServletFileUpload
步骤三:使用ServletFileUpload对request进行解析 ---- 获得很多个FileItem
步骤四:对每个FileItem进行操作 判断FileItem是不是普通字段 isFormField
代表普通字段FileItem
getFieldName(); ---- 获得表单项name属性
getString(); ----- 获得表单项value
代表文件上传FileItem
getInputStream() --- 获得文件内容输入流
getName() ------ 获得上传文件名称