论坛首页 Java企业应用论坛

我写的一个批量上传组件,可同时上传400个文件(附源代码)

浏览 33749 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (10)
作者 正文
   发表时间:2009-11-15   最后修改:2009-12-01
没人看,我在开个新贴。


AlanXUpload是一个通过flash技术提供批量上传文件的web批量上传组件,用户可以自定义上传的文件类型、大小、数量,上传的地址,上传的处理方式,自定义上传UI,接受服务器发送的反馈信息,并显示所有文件及单个文件的上传进度。


Demo,可直接测试:



详细信息,访问: http://www.alanx.cn

以上传速度100kb/s,上传87个总大小为869的文件为例,AlanXUpload表现稳定:











下载源代码,请到www.alanx.cn


公司Quality Leader需要在公司的FMS系统上共享1000多个文档,在下专门为她定制了一个批量上传的组件,替代老的FMS里面单文件选择上次的方法。

开发的时候,我发现flash一次上传的文件大小要在100M以内,文件总和大概在200到500左右,因为文件的数量是由文件名的长短决定的。

老的FMS 采用的是Ajax框架,EXT
2.2,不果现在的EXT已经收费了,所以我也没兴趣了。对于flex也没太大的兴趣,因为其高级客户端组件如报表以及服务器组件等都是昂贵的,公司又不
允许安装盗版软件(自从上次微软和Adobe的人来公司查过之后,我卸载了机器上所有的盗版软件),所以我目前也没打算做过多研究。

Flash大学的时候玩过,这次从新拿来练练手。

另外,通过flash上传的文件如果后台用Struts1.2的ActionForm来接收是有问题,因为flash上传的方式跟Stusts表单
提交的结构不同,这时候我想到了直接从request里面取出来,在放到common-upload组件对象中区,发现总是异常,但用纯Servlet的
request是没问题的,研究了一下,发现Struts的request根Servlet中的request有写不一样,虽然大家都是被包装过的(装饰
模式),但Sturts有可能改变了request的结构。解决的办法是,在Sturst配置文件中不要给该Action配置Form,这样又不会有问题
了,所有对象直接从request中取。


[url=http://www.alanx.cn/wp-content/uploads/2009/10/2.jpg][/url]

Struts1.2 接收文件代码

/**

*

* @param form

* @param response

*/

public ActionForward fileBatchUpload(ActionMapping mapping, ActionForm form,

response.setCharacterEncoding(”UTF-8″);

FMSSession session = BaseSession.getInstance().getBean(

FMSStaffVO fmsStaffVO = getStaffVO(request);

String fileName = null;

String realPath = null;

FMSFile fmsFile = null;

FileItemFactory factory = new DiskFileItemFactory();

upload.setHeaderEncoding(”UTF-8″);

items = upload.parseRequest(request);

FileItem item = (FileItem) items.get(i);

path = new String(item.getString().getBytes(”iso8859-1″),”UTF-8″);

System.out.println(”—————————————————-”);

System.out.println(”item.getName()=”+ item.getName());

System.out.println(”item.isInMemory()=”+item.isInMemory());

System.out.println(”—————————————————-”);

pw = response.getWriter();

pw.println(”路径不正确”);

pw.close();

}

FileItem item = (FileItem) items.get(i);

fileName = item.getName();

File folder = new File(realPath);

System.out.println(folder);

File file = new File(realPath+”\\” + fileName);

BufferedOutputStream bos = new BufferedOutputStream(os);

//copy file






//authority

fmsFile.setName(fileName);

fmsFile.setSize(fileSize+”");

fmsFile.setCreateDate(session.getDate());

fmsFile.setModifyDate(fmsFile.getCreateDate());



FMSFileAccess da = new FMSFileAccess();

da.setAccessUnitId(fmsStaffVO.getStaffId()+”");

auths.add(”5″);

da.setFile(fmsFile);



da.setAccessUnitCategory(FMSFileAccess.ACCESS_UNIT_CATEGORY_ROLE);

auths = new HashSet();

da.setPurviewSet(auths);

das.add(da);

/*List fMSDocuments = new ArrayList();

session.save(fMSDocuments);*/

bis.close();



pw.flush();

}else{

pw.flush();

return null;

}

}

pw.flush();

} catch (Exception e) {

pw.println(”文件上传失败”);

pw.close();

//删除文件

File file = new File(realPath+”\\”+fileName);

file.delete();

}

session.deleteFmsDocumentByDocument(fmsFile, fmsStaffVO.getStaffId()+”");

}
return null;
}

flash文件上传组件附件:

FileUpload
   发表时间:2009-11-15  
代码就不能格式化一下吗,看着就烦
3 请登录后投票
   发表时间:2009-11-15  
kjj 写道
代码就不能格式化一下吗,看着就烦

第一次发帖,直接从我的博客中copy过来的,格式不知道咋弄,可直接下载附件,里面有源代码
0 请登录后投票
   发表时间:2009-11-15  
xiaoqulai 写道
kjj 写道
代码就不能格式化一下吗,看着就烦

第一次发帖,直接从我的博客中copy过来的,格式不知道咋弄,可直接下载附件,里面有源代码


使用BBCode Code标签,像Java源码 :[ code="java"][/code ]
0 请登录后投票
   发表时间:2009-11-16  
这截图是Flash啊?
0 请登录后投票
   发表时间:2009-11-16  
neeke 写道
这截图是Flash啊?

是啊,我这个是flash做的组建,后台接收是java
0 请登录后投票
   发表时间:2009-11-16  
曾经de迷茫 写道
xiaoqulai 写道
kjj 写道
代码就不能格式化一下吗,看着就烦

第一次发帖,直接从我的博客中copy过来的,格式不知道咋弄,可直接下载附件,里面有源代码


使用BBCode Code标签,像Java源码 :[ code="java"][/code ]


谢谢指点,为什么的我的博客上面没有这个BBCode code,需要什么插件吗?
0 请登录后投票
   发表时间:2009-11-16  
曾经de迷茫 写道
xiaoqulai 写道
kjj 写道
代码就不能格式化一下吗,看着就烦

第一次发帖,直接从我的博客中copy过来的,格式不知道咋弄,可直接下载附件,里面有源代码


使用BBCode Code标签,像Java源码 :[ code="java"][/code ]


不行的,用BBCode之后,我的图片都没了,而且代码里面多了很多<B>,看起来也很麻烦
0 请登录后投票
   发表时间:2009-11-16  
xiaoqulai 写道
曾经de迷茫 写道
xiaoqulai 写道
kjj 写道
代码就不能格式化一下吗,看着就烦

第一次发帖,直接从我的博客中copy过来的,格式不知道咋弄,可直接下载附件,里面有源代码


使用BBCode Code标签,像Java源码 :[ code="java"][/code ]


谢谢指点,为什么的我的博客上面没有这个BBCode code,需要什么插件吗?



狂汗....
0 请登录后投票
   发表时间:2009-11-16  
晨星★~雨泪 写道
xiaoqulai 写道
曾经de迷茫 写道
xiaoqulai 写道
kjj 写道
代码就不能格式化一下吗,看着就烦

第一次发帖,直接从我的博客中copy过来的,格式不知道咋弄,可直接下载附件,里面有源代码


使用BBCode Code标签,像Java源码 :[ code="java"][/code ]


谢谢指点,为什么的我的博客上面没有这个BBCode code,需要什么插件吗?



狂汗....

瀑布汗,你发贴的时候没有看到"BBCode编辑器"吗?你点"code"按钮。再或者你直接用可视化编辑器。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics