`
gzhzh
  • 浏览: 25084 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

发布一个好用的文件上传组件simpleface-upload

阅读更多

  最近两个星期利用业余时间在开发一个符合自己使用的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的开销,但我想,这不是什么大的问题。

11
2
分享到:
评论
4 楼 erikchang 2009-07-15  
断点续
75468850 写道
大文件上传有时间的开销,你的不支持异步上传,而且也没有断点续传的功能吧,希望能改进

实现断点上传是不可能的哈,你的客户端是浏览器,http协议中没有断点上传的,除非使用OCX控件
3 楼 oracoo 2009-07-15  
12345678978979
2 楼 gzhzh 2009-07-15  
75468850 写道
大文件上传有时间的开销,你的不支持异步上传,而且也没有断点续传的功能吧,希望能改进

谢谢指教!异步上传那还要结合前台AJAX的应用,至于断点续传嘛,我认为难以实现,理解HTTP的机制就可以明白为什么了,欢迎讨论。
1 楼 75468850 2009-07-10  
大文件上传有时间的开销,你的不支持异步上传,而且也没有断点续传的功能吧,希望能改进

相关推荐

    上传组件simpleface-upload1.0

    2. **simpleface-upload1.0** - 这个文件可能是一个包含所有组件类和资源的压缩包,如Java源文件、配置文件、库依赖等。解压后,开发者可以将这些文件整合到自己的J2EE项目中,实现文件上传功能。 总结来说,...

    上传组件 simpleface-upload 很不错

    “simpleface-upload”是一个专为上传功能设计的组件,它支持上传进度条的显示,这是它的一大亮点。在用户上传大文件时,进度条能够实时反馈上传进度,提供良好的用户体验,避免用户在等待过程中感到困惑或不耐烦。...

    Vuejs文件上传组件多文件上传

    `vue-upload-component`是一个专门为Vue.js设计的文件上传组件,它提供了以上所有功能。以下是该组件的一些主要特性: - 支持多文件选择和拖放上传,提供良好的用户体验。 - 可以设置`put`或`post`请求方法,根据...

    JSP-文件图片上传-fileupload组件-commons-upload

    通过“上传页面”把上传路径提交到upload.jsp页面进行处理,然后把照片文件上传并保存到服务器上。处理代码如下: (); ServletFileUpload upload = new ServletFileUpload(factory); try {List items = upload....

    el-upload多文件一次性上传(携带json),自定义上传事件(手动上传),不使用action属性上传.pdf

    `el-upload`是Element UI库中的一个组件,用于文件上传操作,提供了丰富的配置选项和回调函数,非常适合在Web应用中进行复杂的文件管理。 ### 情况一:简单表单上传 在这种情况下,我们有一个基本的文件上传表单,...

    使用element-ui的upload组件实现上传图片和pdf可查看方法

    首先,`upload`组件是Element-UI中的一个重要组成部分,它提供了文件上传的功能,支持预览、进度条显示、多文件上传、文件限制等特性。在我们的场景中,我们需要对图片和PDF文件进行处理,因此需要对`upload`组件...

    elemetUi 组件--el-upload实现上传Excel文件的实例

    elemetUi 组件的 el-upload 是一个功能强大且灵活的上传组件,通过它我们可以轻松地实现文件上传的功能。下面我们将详细介绍如何使用 elemetUi 组件的 el-upload 实现上传 Excel 文件的实例。 知识点1:el-upload ...

    vue-upload-component:Vue.js文件上传组件,多文件上传,上传目录,拖动上传,拖动目录,同时上传多个文件,html4(IE 9),`PUT`方法,自定义过滤器

    Vue.js文件上传组件该组件只是一个按钮 多文件上传 上传目录 拖动上传 拖动目录 同时上传多个文件 html4(IE 9) PUT方法 自定义过滤器 缩图 块上传 例 安装 npm install vue-upload-component --save ...

    文件上传插件 ng-file-upload

    **文件上传插件 ng-file-upload** 是一个专为AngularJS框架设计的高效、可靠的文件上传解决方案。这个插件由第三方开发者构建,旨在处理大文件上传,同时提供了丰富的功能和易于使用的API,使得在Web应用中集成文件...

    艾恩ASP无组件上传类(An-Upload)V9.2.09

    【艾恩ASP无组件上传类(An-Upload)V9.2.09】是一个专为ASP(Active Server Pages)开发的文件上传解决方案,无需额外安装任何服务器组件,即可实现网页上的文件上传功能。该类库提供了高效、稳定且易于集成的上传...

    断点上传Nginx升级后的组件nginx-upload-module-2.2

    `nginx-upload-module`是Nginx的一个模块,主要任务是处理上传请求,包括接收、验证和存储上传的文件。它的设计目标是提供一种安全且高效的方式来处理文件上传,特别适合高并发和大文件上传的场景。`nginx-upload-...

    FCKeditor文件上传漏洞及利用-File-Upload-Vulnerability-in-FCKEditor1

    【FCKeditor文件上传漏洞及利用 - File-Upload-Vulnerability-in-FCKEditor1】 本文主要探讨了FCKeditor(现称为CKeditor)中的PHP文件上传模块存在的安全漏洞,允许攻击者绕过文件类型检查,将恶意PHP代码上传到...

    ng-file-upload文件上传

    标题 "ng-file-upload文件上传" 指的是一个使用AngularJS框架实现的文件上传功能,主要依赖于名为“ng-file-upload”的插件。这个插件是AngularJS社区中广泛使用的,它提供了丰富的功能,如多文件选择、进度条显示、...

    艾恩ASP无组件上传类(An-Upload) v9.7

    在ASP(Active Server Pages)编程中,文件上传功能是一个常见的需求。为了实现这一功能,开发者通常需要借助于特定的组件或者类库。艾恩ASP无组件上传类(An-Upload) v9.7便是这样一款高效且易于使用的工具,它无需...

    弹窗上传--An-Upload无组件上传类8.8.19 示例

    1. Upload_class.asp - 这可能是一个ASP(Active Server Pages)脚本文件,其中包含了An-Upload上传类的核心代码,用于处理文件的选取、上传逻辑以及与服务器的通信。 2. upload.asp - 这可能是处理文件上传请求的...

    nginx上传下载之nginx-upload-module-2.3.0

    这段配置定义了一个名为 `/upload` 的 URL 路径,用于接收上传的文件。`upload_pass` 指令指定处理上传的内部服务器,`upload_store` 指令设置上传文件的存储路径,`upload_max_file_size` 设置最大文件大小,其他...

    vue-simple-uploader for vue3源码

    `vue-simple-uploader` 是一个适用于 Vue3 的轻量级文件上传组件,它允许开发者方便地实现文件上传功能,包括大文件的分片上传。在对源码进行深入分析之前,我们先来理解一下大文件分片上传的基本原理。 大文件分片...

    使用fileupload组件实现文件上传功能

    使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...

    nginx-upload-module-master.rar_modules_nginx_upload

    它提供了高效、灵活且可靠的文件上传解决方案,支持大文件分块上传以及断点续传,是许多 web 应用程序在后端处理用户上传文件时的首选组件。下面我们将深入探讨这个模块的核心功能、配置选项以及实际应用场景。 1. ...

Global site tag (gtag.js) - Google Analytics