发布一个好用的文件上传组件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的开销,但我想,这不是什么大的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值