JavaEE中上传图片的方式
HTML页面
1.要有一个form标签,method=post请求,以及在form标签中使用input type=file添加上传文件
因为传输的带有图片文件 数据会很大 get请求用容量限制 post没有 所以如果需要传输文件就要用post请求
2.form标签的encType属性必须为multipart/form-data
在http协议中 请求头中有这样一个信息
Content-Type: multipart/form-data; boundary=—-WebKitFormBoundarysrd39rxk51BB2BtB
Content-Type表示提交的数据类型
而encType=multipart/form-data表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼接,然后以二进制流的形式发送给服务器
boundary 表示每段数据的分隔符
- 表示数据的开始
- 每次都由浏览器随机生成
- 结束会再生成一个多了两个-的分隔符
导入jar包
导入conmons-fileupload.jar 而 这个jar包又依赖于 conmmons-io.jar 所以这两个都要导入
jar包中常用的类与方法
ServletFileUpload类 , 用于解析上传数据
Fileltem类,表示每一一个表单项。
- boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);
判断当前上传的数据格式是否是多段的格式。
public List
parseRequest(HttpServletRequest request)
解释上传的文件boolean FileItem.isFormField()
判断当前这个表单项,是否是普通的表单项。还是上传的文件类型。
true 表示普通类型的表单项false 表示上传文件内容
String FileItem.getFieldName()
获取表单项的name属性值String FileItem. getString( )
获取当前表单项的值。String FileItem. getName();
获取上传的文件名void FileItem.write( file );
将上传的文件写到参数file所指向抽硬盘位置。