form表单的普通文本和文件上传 |
您所在的位置:网站首页 › 如何获取表单中的数据源信息和文件 › form表单的普通文本和文件上传 |
一、文件的上传和下载原理
1、文件上传的原理分析
1.1文件上传的必要前提: a、提供form表单,method必须是post b、form表单的enctype必须是multipart/form-data c、提供input type="file"类的上传输入域 1.2enctype属性 作用:告知服务器请求正文的MIME类型。(请求消息头:Content-Type作用是一致的)可选值: 1、application/x-www-form-urlencoded(默认): 正文:name=admin&password=123 服务器获取数据:String name = request.getParameter(“name”); 2、multipart/form-data: 正文: 2.1 fileupload概述 fileupload是由apache的commons组件提供的上传组件。它最主要的工作就是帮我们解析request.getInputStream()。 导入commons-fileupload相关jar包 1、commons-fileupload.jar,核心包; 2、commons-io.jar,依赖包。 2.2 fileupload的核心类有: DiskFileItemFactory、ServletFileUpload、FileItem。 a、解析原理 使用fileupload组件的步骤如下: 1.创建工厂类DiskFileItemFactory对象: DiskFileItemFactory factory = new DiskFileItemFactory() 2.使用工厂创建解析器对象: ServletFileUpload fileUpload = new ServletFileUpload(factory) 3.使用解析器来解析request对象: List list = fileUpload.parseRequest(request) FileItem对象对应一个表单项(表单字段)。可以是文件字段或普通字段。 1、boolean isFormField():判断当前表单字段是否为普通文本字段,如果返回false,说明是文件字段; 2、String getFieldName():获取字段名称,例如:,返回的是username; 3、String getString():获取字段的内容,如果是文件字段,那么获取的是文件内容,当然上传的文件必须是文本文件; 4、String getName():获取文件字段的文件名称;(a.txt) 5、String getContentType():获取上传的文件的MIME类型,例如:text/plain。 6、int getSize():获取上传文件的大小; 7、InputStream getInputStream():获取上传文件对应的输入流; 8、void write(File):把上传的文件保存到指定文件中。 9、delete(); 二、代码 1、页面代码。注:form表单里面加上参数 enctype=“multipart/form-data”。js的作用是添加选择文件按钮,删除选择文件按钮。 图示: |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |