Java进阶之FileUpload完成上传的实例
作者:不知不觉已变淡 发布时间:2022-03-26 03:39:55
标签:Java,FileUpload
Java进阶之FileUpload完成上传的实例
FileUpload是Apache commons下面的一个子项目,用来实现Java项目下的文件上传功能,常见的文件上传还有SmartUpload,Servlet3.0,Struts2。
在这里我用的是commons- fileupload-1.2.1,下面就是一个简单实例,解析过程都写到代码中的注释上了,注释很详细
//创建磁盘文件项工厂
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
//设置缓冲区的大小,如果文件的大小超过了缓冲区的大小,就会产生临时文件
diskFileItemFactory.setSizeThreshold(1024*1024*3);
//获得核心解析类
ServletFileUpload fileUpload=new ServletFileUpload(diskFileItemFactory);
//解决中文文件名上传乱码
fileUpload.setHeaderEncoding("UTF-8");
//解析request,返回list集合
List<FileItem> list = fileUpload.parseRequest(request);
//获得每个部分,将遍历的值存入到一个map集合中
Map<String, String> map=new HashMap<>();
//设置上传文件的文件名
String fileName=null;
for (FileItem fileItem : list) {
//判断普通项和文件上传项
if (fileItem.isFormField()) {
//普通项
String name=fileItem.getFieldName();
String value=fileItem.getString("UTF-8");
map.put(name, value);
}else {
//文件上传项
//获得文件名
fileName=fileItem.getName();
//获得文件的输入流
InputStream is=fileItem.getInputStream();
//获得文件上传的路径
String path=this.getServletContext().getRealPath("/products/1");
OutputStream os=new FileOutputStream(path+"/"+fileName);
int len=0;
byte[] b=new byte[1024];
while ((len=is.read(b))!=-1) {
os.write(b, 0, len);
}
is.close();
os.close();
}
组件FileUpload使用FileItemFactory工厂创建新的文件项目。这个给了组件FileUpload很大的灵活性。这个工厂拥有怎样创建项目的最终控制权。工厂执行过程中上传项目文件的临时数据可以存储在内存中或硬盘上。这个依赖于上传项目的大小(即:数据的字节)。不过这种行为可以在你的应用程序中适当的自定制。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/kdc18333608478/article/details/52664720


猜你喜欢
- 简评:Android Support Library 26 中终于实现了一个等待已久的功能: RecyclerView 的快速滚动 。And
- 二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以
- android获取手机通讯录联系人信息private void getPhoneContacts() {
- 前面我们讲到了Spring在进行事务逻辑织入的时候,无论是事务开始,提交或者回滚,都会触发相应的事务事件。本文首先会使用实例进行讲解Spri
- MD5加密在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密
- 嵌入式Servlet容器在Spring Boot中,默认支持的web容器有 Tomcat, Jetty, 和 Undertow1、原理分析那
- System.ComponentModel.Design.DesignSurface是为设计组件提供一个用户界面,通过它可以实现一个简单的窗
- 在使用手机时,当有未接来电或者新短消息时,手机会给出响应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。Android也提供了用于处
- 1,pair的应用pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一
- 定义:/** * @author Administrator * @project: TestOne * @package: PACKAGE
- 本文实例为大家分享了Java实现发送邮件并携带附件的具体代码,供大家参考,具体内容如下一、 邮件服务器与传输协议要在网络上实现邮件功能,必须
- 1、如何解决服务之间的通信问题?[1]HTTP REST方式 使用http协议进行数据传递 json格式数据[2]RPC方式 远程过程调用
- 编辑上传文件的页面upload.html注意事项:上传方式使用POST不能使用GET(GET不能上传文件)表单 enctype 属性应该设置
- Java发红包案例,供大家参考,具体内容如下首先我们需要分析这个代码的架构是什么,需要什么类组成等。我们需要建立4个类,这4个类分别是用户类
- 大家是不是平常都有好多文件需要定期备份?如歌曲、视频、文档,代码文件等等,如果经常增加删除修改文件,就需要定期备份,最早之前文件都不大的时候
- 前言春节要到了,看惯了前端各种小游戏,确实做得很好,很精致。但是我也要为后端程序员稍微做一点贡献,做一款java版本的【年兽大作战】。这个游
- 想要实现无限轮播,一直向左滑动,当到最后一个view时,会滑动到第一个,无限…可以自己写ViewPager然后加handler先实现自动滚动
- Android 文件操作详解Android 的文件操作说白了就是Java的文件操作的处理。所以如果对Java的io文件操作比较熟
- 我们在shader中对贴图处理时,有时候会有一些比较复杂的运算,比方说三角函数,开方等,一般情况下,如果可以在越上层做运算,性能会越高。C#
- 请求映射源码首先看一张请求完整流转图(这里感谢博客园上这位大神的图,博客地址我忘记了):前台发送给后台的访问请求是如何找到对应的控制器映射并