阅读更多
组件(含java源代码)下载:www.alanx.cn

上个月,我在javaeye上发布了我写的一个文件批量上传组件的帖子:
主题:我写的一个批量上传组件,可同时上传400个文件(附源代码)

期间有大牛建议我封装一下,我觉得这是一个好主意。因此AlanXUpload组件1.0就诞生了,我不会妄自菲薄,希望将来能比老外的swfupload更好用,特别是对于java开发者来说。(同样适合其他任何web编程环境 。)

主要功能:
1.可一次性选择200到1000个文件批量上传
2.可在选择前指定文件格式(如:".xls;.doc")和大小
3.单个文件大小允许最到到100M,多个文件大小可达1G
4.可实时显示当前在批量上传的文件总大小和总数及进度条
5.可实时显示单个文件的总大小和以上传大小及进度


AlanXUpload将在2.0采用最宽松的MIT许可证,使用google code托管代码,目前web端的代码功能还需要加强(接受并分发服务器的响应没有做),as脚本将在2.0开放源代码

现在就已经好用了,简单到不可思议:
在任何一个jsp页面,写下面加粗的三个标记,就可以了。

<%@ taglib prefix="ax" uri="/WEB-INF/AlanXUpload.tld" %>
.........
  <head>
   ..........
<ax:head/>
  </head>
 
  <body>
  <ax:body/>
  </body>
</html>

给以demo让大家测试一下吧
(上传文件不要超过100M,不要等于0Kb,否则会被忽视,可用组合键选择多个文件):



65
11
评论 共 104 条 请登录后发表评论
84 楼 allen19856290 2009-12-03 12:50
很不错,但我发现一个问题,文件总大小怎么每次都累加呢? 如果我选择一个文件 觉得选错了 再选择另一个 这个时候的文件总大小 就累加了。
83 楼 xiaoqulai 2009-12-03 12:27
jxpath 写道
而且每个文件还是异步、并发进行,都可以看到不同的进度条

最好不要并发上传,尽管没有技术问题,但 1 会让服务器使用过多的资源, 2 可能会引起业务冲突问题,比如解析文件数据的时候。

所以,如果是企业内部网,并发和队列的上传效率基本上是一样的,因为都很快,如果是对外,比如想javaeye这样的网站,它是绝不会愿意让你同时上传N个文件的,如果大家都这样的话,它又要花钱买服务器了。
82 楼 xiaoqulai 2009-12-03 12:22
jxpath 写道
我实现了一个没有你这个那么复杂,上传文件数无限制,测试过可以上传超过1g的文件,代码更简单
<xui:uploadFiles styleTh="15%" property="file2" height="240px" key="多文件"/>

而且每个文件还是异步、并发进行,都可以看到不同的进度条

噢,我的上传文件无限制是没不可能的,这个由flash 虚拟机决定的,请问你用的是什么技术呢,javafx?  不知道你有没有好的方法解决单个文件超过100M的问题呢。
81 楼 xiaoqulai 2009-12-03 12:20
renci 写道
你给的源代码地址我访问不了,能否提供googlecode的地址????

googlecode我还不大会用 , 不过你可以在googlecode里面收缩一下alanxupload,可以下载全部的源代码,包括没有公开的as脚本也在里面。不过如果看得头大别来这里踩我两脚啊  我会在下个版本整理好所有的代码并放到googlecode上的。

另外,我的网站绝对是可以下载的,你可能方法不对?
80 楼 jxpath 2009-12-03 11:04
我实现了一个没有你这个那么复杂,上传文件数无限制,测试过可以上传超过1g的文件,代码更简单
<xui:uploadFiles styleTh="15%" property="file2" height="240px" key="多文件"/>

而且每个文件还是异步、并发进行,都可以看到不同的进度条
79 楼 nwpu053871 2009-12-03 10:55
很不多,期待2.0
78 楼 JustDoNow 2009-12-03 10:54
不错啊
http://www.open-open.com/open258125.htm
已经收录了
77 楼 renci 2009-12-03 09:48
你给的源代码地址我访问不了,能否提供googlecode的地址????
76 楼 xiaoqulai 2009-12-03 09:00
zhenjia 写道
提个建议,上传完毕以后
最好有个列表显示上传完成的文件 文件名 大小 类型 操作(删除)
如果这个LIST能DIY就更好了
 

下个版本可以实现的,谢谢
75 楼 zhenjia 2009-12-03 08:34
提个建议,上传完毕以后
最好有个列表显示上传完成的文件 文件名 大小 类型 操作(删除)
如果这个LIST能DIY就更好了
 
74 楼 elgs 2009-12-03 02:40
xiaoqulai 写道
depravedangel 写道
xiaoqulai 写道
langhua9527 写道
如果一次性要传200个的话,为啥不压一下呢

呵呵,话不能这么说,给你一个需求吧,我有200个excel表格,我需要上传到服务器然后excel中的每天一条数据由服务器解析到数据库中

一样可以压缩后再上传,然后由程序读取压缩包中的文件,这样比起客户上传200个文件显然要好的多

是的,我以前就用7zip做过,但解压缩是非常消耗cpu资源的,服务器成本太高。而且还得去额外编码没必要。

当然可以压缩,这个组件提供给用户多一种选择,并没有妨碍任何人压缩在上传,对吗?
73 楼 ruvuoai 2009-12-02 23:25
好东西 
72 楼 xiaoqulai 2009-12-02 22:58
depravedangel 写道
xiaoqulai 写道
langhua9527 写道
如果一次性要传200个的话,为啥不压一下呢

呵呵,话不能这么说,给你一个需求吧,我有200个excel表格,我需要上传到服务器然后excel中的每天一条数据由服务器解析到数据库中

一样可以压缩后再上传,然后由程序读取压缩包中的文件,这样比起客户上传200个文件显然要好的多

是的,我以前就用7zip做过,但解压缩是非常消耗cpu资源的,服务器成本太高。而且还得去额外编码没必要。
71 楼 jacki6 2009-12-02 22:46
不错 支持下 期待2.0
70 楼 depravedangel 2009-12-02 21:18
不过还是支持一下lz
69 楼 depravedangel 2009-12-02 21:17
xiaoqulai 写道
langhua9527 写道
如果一次性要传200个的话,为啥不压一下呢

呵呵,话不能这么说,给你一个需求吧,我有200个excel表格,我需要上传到服务器然后excel中的每天一条数据由服务器解析到数据库中

一样可以压缩后再上传,然后由程序读取压缩包中的文件,这样比起客户上传200个文件显然要好的多
68 楼 xiaoqulai 2009-12-02 20:29
langhua9527 写道
如果一次性要传200个的话,为啥不压一下呢

呵呵,话不能这么说,给你一个需求吧,我有200个excel表格,我需要上传到服务器然后excel中的每天一条数据由服务器解析到数据库中
67 楼 langhua9527 2009-12-02 18:25
如果一次性要传200个的话,为啥不压一下呢
66 楼 xiaoqulai 2009-12-02 17:59
白肚兜 写道

AlanXUploadServlet中  楼主其中用到了jdk1.5新特性 泛型,注解,foreach   jdk1.5以下版本就挂了     建议去掉这些  兼容  jdk1.4      兄弟们 也可以自己动手改


谢谢兄弟指出问题,我倒没在意这点,不好意思。不过有源代码的,大家改改从新编译一下就OK.
65 楼 白肚兜 2009-12-02 16:56
xiaoqulai 写道
esanone 写道
jdk1.4 tomcat5.x 不支持吗,我测试的时候有错?

呃, 你是说你下载的eclipse demo吗,我是在java6 和 tomcat6上测试的。不过肯定也是支持的,你能告诉我是什么错吗,服务器抛异常了吗?

对。
对啊,下了那个DEMO,放到小猫下就出错了,错误是:javax.servlet.ServletException: cn/alanx/upload/tag/AlanXUploadBodyTag (Unsupported major.minor version 49.0)
java.lang.UnsupportedClassVersionError: cn/alanx/upload/tag/AlanXUploadBodyTag (Unsupported major.minor version 49.0)
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:539)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
esanone 写道
xiaoqulai 写道
esanone 写道
jdk1.4 tomcat5.x 不支持吗,我测试的时候有错?

呃, 你是说你下载的eclipse demo吗,我是在java6 和 tomcat6上测试的。不过肯定也是支持的,你能告诉我是什么错吗,服务器抛异常了吗?

对。
对啊,下了那个DEMO,放到小猫下就出错了,错误是:javax.servlet.ServletException: cn/alanx/upload/tag/AlanXUploadBodyTag (Unsupported major.minor version 49.0)
java.lang.UnsupportedClassVersionError: cn/alanx/upload/tag/AlanXUploadBodyTag (Unsupported major.minor version 49.0)
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:539)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)

AlanXUploadServlet中  楼主其中用到了jdk1.5新特性 泛型,注解,foreach   jdk1.5以下版本就挂了     建议去掉这些  兼容  jdk1.4      兄弟们 也可以自己动手改

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics