文件上传
2016-03-03 00:59
190 查看
1.文件上传时,表单需要做的准备
1).请求方式为 POST
2).使用file的表单域:<input type="file" name="file"/>
3).设置编码方式 enctype="multipart/form-data" 表单以二进制方式进行传输
当修改编码方式后,后台不能再用 request.getParameter(),获取前台页面参数,获取不到。
可以使用输入流的方式来获取,但不建议这么做。
具体使用 commons-fileupload 组件完成问价上传
I .搭建环境:
加入jar
commons-fileupload-1.2.1.jar
commons-io-2.0.jar
II.基本思想:
>commons-fileupload 可以解析请求,得到一个FileItem 对象组成的List
>commons-fileupload 把所有的请求信息都解析为FileItem对象,无论是一个一般的文本域还是一个文件域.
>可以调用FileItem的isFormField()方法来判断是一个 表单域 或不是表单域(则是一个文本域)
可以参看 用户指导 和 api文档
/commons-fileupload-1.2.1-bin/commons-fileupload-1.2.1/site/using.html
/commons-fileupload-1.2.1-bin/commons-fileupload-1.2.1/site/apidocs/index.html
III.如何得到List<FileItem>
>简单方式
>复杂方式:可以为文件上传添加一些限制添加和属性
1).请求方式为 POST
2).使用file的表单域:<input type="file" name="file"/>
3).设置编码方式 enctype="multipart/form-data" 表单以二进制方式进行传输
当修改编码方式后,后台不能再用 request.getParameter(),获取前台页面参数,获取不到。
可以使用输入流的方式来获取,但不建议这么做。
具体使用 commons-fileupload 组件完成问价上传
I .搭建环境:
加入jar
commons-fileupload-1.2.1.jar
commons-io-2.0.jar
II.基本思想:
>commons-fileupload 可以解析请求,得到一个FileItem 对象组成的List
>commons-fileupload 把所有的请求信息都解析为FileItem对象,无论是一个一般的文本域还是一个文件域.
>可以调用FileItem的isFormField()方法来判断是一个 表单域 或不是表单域(则是一个文本域)
可以参看 用户指导 和 api文档
/commons-fileupload-1.2.1-bin/commons-fileupload-1.2.1/site/using.html
/commons-fileupload-1.2.1-bin/commons-fileupload-1.2.1/site/apidocs/index.html
// Process a regular form field if (item.isFormField()) { String name = item.getFieldName(); String value = item.getString(); ... }
// Process a file upload if (!item.isFormField()) { String fieldName = item.getFieldName(); String fileName = item.getName(); String contentType = item.getContentType(); boolean isInMemory = item.isInMemory(); long sizeInBytes = item.getSize(); ... }
III.如何得到List<FileItem>
>简单方式
// Create a factory for disk-based file items FileItemFactory factory = new DiskFileItemFactory(); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // Parse the request List /* FileItem */ items = upload.parseRequest(request);
>复杂方式:可以为文件上传添加一些限制添加和属性
// Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Set factory constraints //设置内存中最多可以存放的上传文件的大小,若超出则把文件写到一个临时的文件夹中,以byte为单位 factory.setSizeThreshold(yourMaxMemorySize); factory.setRepository(yourTempDirectory); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // Set overall request size constraint 设置总的不能超过的大小,也可以设置单个文件的大小
// public void setFileSizeMax(long fileSizeMax)
upload.setSizeMax(yourMaxRequestSize); // Parse the request List /* FileItem */ items = upload.parseRequest(request);
相关文章推荐
- 网易公开课《Linux内核分析》学习心得-mykernel实验的实践和分析
- 错误记录:Resource ID #0x7f040006 type #0x12 is not valid
- 详解 CALayer 和 UIView 的区别和联系
- 深入探讨 Java 类加载器
- Hibernate学习篇05——联合主键(二)
- ***LeetCode 90 Subsets ii
- thinkphp3.2.3开发商城实战(一)
- 面试
- 栈[顺序栈]
- H-Index II
- IOS--AFNetworking POST与GET请求
- MFC双缓冲绘图
- 20160303 - 升级 Windows 10 版本 1511 后,文件夹默认打开方式为 cmd 的修复
- 个人进阶之路——安卓蓝牙模块(4)
- Linux下使用C语言返回年月日
- W6s数据传输格式
- iOS 第三方 需要 引用的库
- 自定义垂直滚动切换TextView
- 关于React使用中遇到的坑
- Hibernate学习篇04——联合主键(一)