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 表示每段数据的分隔符

  1. 表示数据的开始
  2. 每次都由浏览器随机生成
  3. 结束会再生成一个多了两个-的分隔符

导入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所指向抽硬盘位置。