阅读更多
组件(含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 条 请登录后发表评论
104 楼 lzstone 2011-08-29 12:57
这个必须顶
103 楼 asgab 2011-08-29 12:51
顶,晕,最小长度为5
102 楼 zqb666kkk 2011-01-12 19:46
servelet  了 执行完成后怎么刷新页面 这个我一直没实现 弄了一下午了
101 楼 zqb666kkk 2011-01-11 15:39

      <script type="text/javascript" src="AlanX/swfobject.js"></script><script type="text/javascript">var flashvars = {};flashvars.uploadUrl="http://localhost:8084/PathPlat/AlanXUploadServlet?CoObject=[Ljava.lang.String;@1d2332&Type=Edit&TypeID=402880902d2fa00d012d2fe0b4e90005&orgId=402880b21815536801181594f9d7000b&CreatorTypeID=402880e5292494b6012924b7a0aa0002";flashvars.extensionName="*.*";flashvars.extensionDisp="AlanX上传组件";flashvars.maxFileN=100;flashvars.maxFileSize=104857600;flashvars.maxAllFileSize=10485760001048576000;flashvars.waitForProgress = "false";flashvars.errorContinue = "true";flashvars.showLogoTxt = "true";var params = {};var attributes = {};swfobject.embedSWF("AlanX/AlanX.swf", "AlanX", "500", "40", "9.0.0","AlanX/expressInstall.swf",flashvars, params, attributes);</script>


我页面加了传输传递 也修改了自定义标签 <!--参数传入-->
   <tag>
    <description>AlanXInput 参数传入</description>
    <name>input</name>
    <tag-class>cn.alanx.upload.tag.AlanXUploadHeadTag</tag-class>
    <body-content>empty</body-content>
<attribute>
            <name>coObject</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
<attribute>
            <name>type</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
<attribute>
            <name>typeID</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
<attribute>
            <name>orgId</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
<attribute>
            <name>creatorTypeID</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
  </tag>  可是servelet里只得到第一个参数的值 其他的值死活得不到?求解
100 楼 jieming 2010-01-05 10:24
怎样实现把参数存到servlet里面?
99 楼 kksunshine 2009-12-14 13:08
期待2.0的到来
98 楼 xiaoqulai 2009-12-06 01:20
修复了1.0的两个紧急的bug,如需使用,请务必重新下载如下文件,解压后替换原来版本中的文件,此外,应大家要求,添加了文件上传中断的功能,修复了文件尺寸统计不准确的bug,修复了标签提示注释错误的bug。请到http://www.alanx.cn下载AlanXUpload1.0补丁
97 楼 xiaoqulai 2009-12-04 22:52
huncent 写道

    def f = request.getFile('Filedata')
    if(!f.empty) {
      def imgDirPath=grailsApplication.config.images.location;
      new File( imgDirPath ).mkdirs()
      def file= new File(imgDirPath+f.getOriginalFilename());
      f.transferTo(file)
      response.sendError(200,'Done');
    }    


这是服务端得代码吗,值得借鉴一下,这个跟swfupload没关系。你同样可以写这样的代码,从AlanxUpload里面拿到上传的数据
96 楼 tangyuanjian 2009-12-04 22:22
为什么有100M 的限制了
95 楼 huncent 2009-12-04 20:44
xiaoqulai 写道
huncent 写道
xiaoqulai 写道
cnpollux 写道
居然敢用个“最”字。

为什么不能用啊,觉得有比这个更简单的,就贴出来让大家看看。

我说几句,我的项目基于grails的,采用的swfupload,上传部分java的只要几行代码就搞定了,所以也觉得“最”字有点扎眼...


1.这个标签的功能不仅仅是上传部分,而且包含服务器的接收部分
2.swfupload对一般初级的java开发者来说,绝对谈不上一个最字,我当时在项目中写自己的上传组件,就是觉得swfupload用起来不符合我的要求,而且有点麻烦
3.请阁下把代码贴出来看看,看看有几行哈

    def f = request.getFile('Filedata')
    if(!f.empty) {
      def imgDirPath=grailsApplication.config.images.location;
      new File( imgDirPath ).mkdirs()
      def file= new File(imgDirPath+f.getOriginalFilename());
      f.transferTo(file)
      response.sendError(200,'Done');
    }    
94 楼 xiaoqulai 2009-12-04 17:07
warison_2008 写道
发现个bug,上传文件总大小计算不对。(第一次我选择100k的文件,第二次我选择10k文件),页面显示是110k,但实际上传是第二个文件?
问下怎么保证同事上传第一次和第二次都选择的文件呢?
还有高人可否解决断点续传的问题?

谢谢,这个是demo的bug.下一个版本会去掉。
93 楼 warison_2008 2009-12-04 14:59
发现个bug,上传文件总大小计算不对。(第一次我选择100k的文件,第二次我选择10k文件),页面显示是110k,但实际上传是第二个文件?
问下怎么保证同事上传第一次和第二次都选择的文件呢?
还有高人可否解决断点续传的问题?
92 楼 xiaoqulai 2009-12-04 14:17
梦影星魂 写道
为什么我把它整合到struts2中,文件就传不了了,但是他又显示文件上传成功,在控制台只有路径,没有上传的文件的名称。


你的接受程序有问题,文件上传是不受服务器控制的,一旦上传,文件就会直接被推送到服务器,不管服务器是否接受成功。
91 楼 梦影星魂 2009-12-04 14:11
为什么我把它整合到struts2中,文件就传不了了,但是他又显示文件上传成功,在控制台只有路径,没有上传的文件的名称。
90 楼 xiaoqulai 2009-12-04 10:00
cue2008 写道
单个文件大小允许最到到100M,多个文件大小可达1G  对于个人来说非常好,但是对于服务器来说肯定承受不了太多人在上传

参数可以配置的,你可以设置允许上传文件的的大小:
        <ax:body
  maxFileN="10"
  extensionName=".doc;.xls"
  maxFileSize="10240"
  maxAllFileSize="102400"
  />

意思是说,最多允许同时上传10个文件,
只允许上传doc(word),xls(excel)的格式,其他格式文件会被过滤掉
单个文件最大准许10k
上传文件总大小最大只允许100k
89 楼 cue2008 2009-12-04 08:41
单个文件大小允许最到到100M,多个文件大小可达1G  对于个人来说非常好,但是对于服务器来说肯定承受不了太多人在上传
88 楼 yhbngt 2009-12-03 17:50
做成像QQ邮箱那样子上传的效果更好。
87 楼 xiaoqulai 2009-12-03 13:13
allen19856290 写道
很不错,但我发现一个问题,文件总大小怎么每次都累加呢? 如果我选择一个文件 觉得选错了 再选择另一个 这个时候的文件总大小 就累加了。

我原本是打算用户可以选择多次,并累积上传,这样就可以突破上传数量限制的魔咒,没想到flash的api不支持的,它的选择和上传是绑定在一起的,不能多次选择,一次上传。到底有没有更好的解决办法,我会在研究一下。

另外,谢谢你的支持。
86 楼 xiaoqulai 2009-12-03 13:09
allen19856290 写道
很不错,但我发现一个问题,文件总大小怎么每次都累加呢? 如果我选择一个文件 觉得选错了 再选择另一个 这个时候的文件总大小 就累加了。

这个demo的bug,下载后不会有的。因为这个demo实在发布前就已经写好的,里面有很多hardcode的东西,没想到被你发现了,
85 楼 allen19856290 2009-12-03 12:56
随便支持了下楼主,点击了N次你页地的广告,觉得真的很不错。质疑的人请闭嘴,有种帖代码。

发表评论

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

相关推荐

Global site tag (gtag.js) - Google Analytics