分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

文件上传fileupload文件接收

发布时间:2023-09-06 01:16责任编辑:顾先生关键词:upload文件上传

form表单提交数据到servlet后,使用fileupload进行接收。

fileupload 是由 apache 的 commons 组件提供的上传组件。它最主要的工作就是帮我们解析 request.getInputStream()。

fileupload 组件需要的JAR包有:

commons-fileupload.jar,核心包;

commons-io.jar,依赖包。

fileupload 简单应用

fileupload的核心类有:DiskFileItemFactory、ServletFileUpload、FileItem。

使用 fileupload 组件的步骤

1. 创建工厂类 DiskFileItemFactory 对象:DiskFileItemFactory factory = new DiskFileItemFactory()

2. 使用工厂创建解析器对象:ServletFileUpload fileUpload = new ServletFileUpload(factory)

3. 使用解析器来解析 request 对象:List<FileItem> list = fileUpload.parseRequest(request)

隆重介绍 FileItem 类,它才是我们最终要的结果。一个FileItem对象对应一个表单项(表单字段)。

一个表单中存在文件字段和普通字段,可以使用FileItem类的 isFormField()方法来判断表单字段是否为普通字段,如果不是普通字段,那么就是文件字段了。

主要方法:

String getName():获取字段的文件名称(原始文件名),普通字段值为null,文件字段为文件的名称;
String getString():获取字段的内容,如果是文件字段,那么获取的是文件内容,当然上传的文件必须是文本文件,如果是普通字段,获得字段的值;
String getFieldName():获取字段名称,例如:<input type="test" name="username"/>,返回的是username;
String getContentType():获取上传的文件的类型,例如:text/plain,如果是普通字段,值为null;
long getSize():获取字段的大小,单位:byte;
boolean isFormField():判断当前表单是否为普通文本字段,如果返回true,说明是普通字段,如果返回false,说明是文件字段;
InputStream getInputStream():获取上传文件对应的输入流,普通字段返回null;
void write(File):把上传的文件保存到指定文件中。

api链接:http://commons.apache.org/proper/commons-fileupload/javadocs/api-release/index.html

示例代码:

 1 ????????//创建接收文件的工厂类 2 ????????DiskFileItemFactory factory = new DiskFileItemFactory(); 3 ????????//创建文件解析对象 4 ????????ServletFileUpload sfu = new ServletFileUpload(factory); 5 ????????try { 6 ????????????//解析request获得表单中的每一文件项(包含普通文本域) 7 ????????????List<FileItem> fiList = sfu.parseRequest(request); 8 ????????????//遍历每一个文本项 9 ????????????for(FileItem fi : fiList){10 ????????????????//获得原始文件名11 ????????????????String originalFilename = fi.getName();12 ????????????????//获得字段的内容13 ????????????????//Returns the contents of the file item as a String, using the default character encoding.14 ????????????????String content = fi.getString();15 ????????????????//获得字段名16 ????????????????String field = fi.getFieldName();17 ????????????????//获得字段的内容类型18 ????????????????String contentType = fi.getContentType();19 ????????????????//获得字段大小,以byte为单位20 ????????????????long size = fi.getSize();21 ????????????????//是否是普通字段22 ????????????????//如果true,代表普通字段(a simple form field)23 ????????????????//如果false,代表文件字段24 ????????????????boolean isFormField = fi.isFormField();25 ????????????????System.out.println("原始文件名:" + originalFilename);26 ????????????????System.out.println("字段的内容:" + content);27 ????????????????System.out.println("字段名:" + field);28 ????????????????System.out.println("字段的内容类型:" + contentType);29 ????????????????System.out.println("字段大小(单位:byte):" + size);30 ????????????????System.out.println("是否是普通字段:" + isFormField);31 ????????????????System.out.println("============================");32 ????????????}33 ????????} catch (FileUploadException e) {34 ????????????e.printStackTrace();35 ????????}

附上fileupload 的下载路径:https://pan.baidu.com/s/1kUSBAPx

密码:p4fj

文件上传fileupload文件接收

原文地址:http://www.cnblogs.com/ShawnYang/p/7645494.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved