最近两个星期利用业余时间在开发一个符合自己使用的MVC框架,目前正在测试当中。框架支持多文件上传功能,文件上传的过程中,会在服务端创建临时文件,等所有操作完毕后再删除临时文件。因此,不会出现由于文件尺寸过大而导致内存溢出情况,这个垢病在以往使用其他上传组件的时候,弄得我头痛不已。为了实现这个框架的功能需求,便自己开发了一个看似更完美的上传组件,在使用上也力求简单,事实上,这个上传组件在使用上确实非常简单,而且功能齐全。组件是框架结构的一部份,但可以独立使用,并且不依赖任何第三方类库。所以,便在发布我的MVC框架之前,先独立发布这个上传组件(含源代码和使用范例
),以践行JAVA世界的开源精神,如果能对JAVA开发者起到一丝丝的帮助,我都会倍感欣慰。当然,由于本人的水平有限,在设计开发上必有不足之处,欢迎各位提出宝贵意见。
来看看一段使用范例中的主要代码,以Servlet中使用为例:
StringBuilder sb=new StringBuilder("已上传的文件列表<hr>");
//创建simpleface-upload上传组件实例
FileUploadCommon upload=new FileUploadCommon(request);
//设置保存文件目录
upload.setSaveFolder("C:\\temp");
//设置允许单个文件上传的最大字节数(不设置则不限)
//upload.setAllowedMaxLength(1024*1024);
//设置允许上传的文件类型(不设置则不限)
//upload.setAllowedExtension(new String[]{"wav", "mp3"});
try {
upload.acceptData(); //接收数据
List<UploadFile> uploadFileList=upload.getUploadFile(); //获取所有上传的文件
int i=1;
for(UploadFile uf : uploadFileList)
{
sb.append("文件名:").append(uf.getFileName())
.append("<br>文件类型:").append(uf.getFileExtension())
.append("<br>文件大小:").append(uf.getFileSize())
.append("<br>--------------------");
uf.setFileName("uploadFile_"+i+uf.getFileExtension()); //设置保存文件名称
uf.save(); //保存文件
++i;
}
//获取表单其他信息
String userName=upload.getRequestParameter("userName");
System.out.println("userName="+userName);
upload.close(); //记住一定要释放资源
response.setContentType("text/html;charset=GBK");
response.getWriter().println(sb.toString()); //输出已上传的所有文件信息
response.getWriter().close();
} catch (MaxLengthExceededException e) {
// 上传文件大小超出最大限制
e.printStackTrace();
} catch (ExtensionExceededException e) {
// 上传文件类型不允许
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
个人感觉在使用上已经非常简单,对于文件上传的功能需求也就如此了,重点在于前面说过的,由于在服务端创建临时文件来接收文件,所以解决了时下困扰很多人的上传大文件的问题。不足之处在于,增加了存取临时文件I/O的开销,但我想,这不是什么大的问题。
分享到:
相关推荐
2. **simpleface-upload1.0** - 这个文件可能是一个包含所有组件类和资源的压缩包,如Java源文件、配置文件、库依赖等。解压后,开发者可以将这些文件整合到自己的J2EE项目中,实现文件上传功能。 总结来说,...
“simpleface-upload”是一个专为上传功能设计的组件,它支持上传进度条的显示,这是它的一大亮点。在用户上传大文件时,进度条能够实时反馈上传进度,提供良好的用户体验,避免用户在等待过程中感到困惑或不耐烦。...
`vue-upload-component`是一个专门为Vue.js设计的文件上传组件,它提供了以上所有功能。以下是该组件的一些主要特性: - 支持多文件选择和拖放上传,提供良好的用户体验。 - 可以设置`put`或`post`请求方法,根据...
通过“上传页面”把上传路径提交到upload.jsp页面进行处理,然后把照片文件上传并保存到服务器上。处理代码如下: (); ServletFileUpload upload = new ServletFileUpload(factory); try {List items = upload....
`el-upload`是Element UI库中的一个组件,用于文件上传操作,提供了丰富的配置选项和回调函数,非常适合在Web应用中进行复杂的文件管理。 ### 情况一:简单表单上传 在这种情况下,我们有一个基本的文件上传表单,...
首先,`upload`组件是Element-UI中的一个重要组成部分,它提供了文件上传的功能,支持预览、进度条显示、多文件上传、文件限制等特性。在我们的场景中,我们需要对图片和PDF文件进行处理,因此需要对`upload`组件...
elemetUi 组件的 el-upload 是一个功能强大且灵活的上传组件,通过它我们可以轻松地实现文件上传的功能。下面我们将详细介绍如何使用 elemetUi 组件的 el-upload 实现上传 Excel 文件的实例。 知识点1:el-upload ...
Vue.js文件上传组件该组件只是一个按钮 多文件上传 上传目录 拖动上传 拖动目录 同时上传多个文件 html4(IE 9) PUT方法 自定义过滤器 缩图 块上传 例 安装 npm install vue-upload-component --save ...
**文件上传插件 ng-file-upload** 是一个专为AngularJS框架设计的高效、可靠的文件上传解决方案。这个插件由第三方开发者构建,旨在处理大文件上传,同时提供了丰富的功能和易于使用的API,使得在Web应用中集成文件...
【艾恩ASP无组件上传类(An-Upload)V9.2.09】是一个专为ASP(Active Server Pages)开发的文件上传解决方案,无需额外安装任何服务器组件,即可实现网页上的文件上传功能。该类库提供了高效、稳定且易于集成的上传...
`nginx-upload-module`是Nginx的一个模块,主要任务是处理上传请求,包括接收、验证和存储上传的文件。它的设计目标是提供一种安全且高效的方式来处理文件上传,特别适合高并发和大文件上传的场景。`nginx-upload-...
【FCKeditor文件上传漏洞及利用 - File-Upload-Vulnerability-in-FCKEditor1】 本文主要探讨了FCKeditor(现称为CKeditor)中的PHP文件上传模块存在的安全漏洞,允许攻击者绕过文件类型检查,将恶意PHP代码上传到...
标题 "ng-file-upload文件上传" 指的是一个使用AngularJS框架实现的文件上传功能,主要依赖于名为“ng-file-upload”的插件。这个插件是AngularJS社区中广泛使用的,它提供了丰富的功能,如多文件选择、进度条显示、...
在ASP(Active Server Pages)编程中,文件上传功能是一个常见的需求。为了实现这一功能,开发者通常需要借助于特定的组件或者类库。艾恩ASP无组件上传类(An-Upload) v9.7便是这样一款高效且易于使用的工具,它无需...
1. Upload_class.asp - 这可能是一个ASP(Active Server Pages)脚本文件,其中包含了An-Upload上传类的核心代码,用于处理文件的选取、上传逻辑以及与服务器的通信。 2. upload.asp - 这可能是处理文件上传请求的...
这段配置定义了一个名为 `/upload` 的 URL 路径,用于接收上传的文件。`upload_pass` 指令指定处理上传的内部服务器,`upload_store` 指令设置上传文件的存储路径,`upload_max_file_size` 设置最大文件大小,其他...
`vue-simple-uploader` 是一个适用于 Vue3 的轻量级文件上传组件,它允许开发者方便地实现文件上传功能,包括大文件的分片上传。在对源码进行深入分析之前,我们先来理解一下大文件分片上传的基本原理。 大文件分片...
使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...
它提供了高效、灵活且可靠的文件上传解决方案,支持大文件分块上传以及断点续传,是许多 web 应用程序在后端处理用户上传文件时的首选组件。下面我们将深入探讨这个模块的核心功能、配置选项以及实际应用场景。 1. ...