`
leobluewing
  • 浏览: 242287 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

多文件上传组件SWFUpload java环境小例子

阅读更多
本文发现还是有人发短消息提问,今天特地编辑一下。

当时发文的时候,网上关于flash提交文件的文章还是比较少的,现在是一google一大把。所以本文也不会再更新什么东西了。。

另外说明下那个例子是很久前的东西了,不适用于flash10版本,只能用在flash9以下版本,想使用看效果的可以把本机的flash版本退到9然后看下效果。

============================分割线=========================

前几周做一个web企业项目,用户一定要求要有批量上传功能,而且指明了要和他们的老系统上传文件功能一样(老系统是c/s结构,vb做的)。然后没办法,想来想去只有flash能做到,于是上网找有没有这方面的东西,就找到了这个东东——SWFUpload.

官网地址是:http://swfupload.mammon.se/

由于在官网的里例子示范里面只有php,C#,VB.net和ROR的,然后我上javaeye搜了下,好象也不多,只有一篇,而且也是比较高级的,于是只能自己搞了。

完了之后觉得这个东西的确相当不错,使用感觉很好,我估计我以后做项目可能都要用这玩意了。

代码我自己做了个war包,很简单的一个例子,我在tomcat5.5和java5.0环境下测试通过。

包结构如下:
index.jsp
upload.jsp
js
+-----example_callbacks.js
+-----SWFUpload.js
+-----SWFUpload.swf


以上index.jsp就是文件上传显示页面,upload.jsp做上传功能。js里面的两个一个是与swf通信的回调函数,一个是本身使用的js文件。

比较重要的一段内容是在index.jsp里面,如下
var swfu;
	window.onload = function() {
	swfu = new SWFUpload({
		upload_script : "../upload.jsp",  //调用的上传功能
		target : "SWFUploadTarget",
		flash_path : "js/SWFUpload.swf",  //flash所在位置
		allowed_filesize : 30720,	// 30 MB
		allowed_filetypes : "*.*",
		allowed_filetypes_description : "All files...",
		browse_link_innerhtml : "选择",
		upload_link_innerhtml : "开始上传",
		browse_link_class : "swfuploadbtn browsebtn",
		upload_link_class : "swfuploadbtn uploadbtn",
		flash_loaded_callback : 'swfu.flashLoaded',
		upload_file_queued_callback : "fileQueued",
		upload_file_start_callback : 'uploadFileStart',
		upload_progress_callback : 'uploadProgress',
		upload_file_complete_callback : 'uploadFileComplete',
		upload_file_cancel_callback : 'uploadFileCancelled',
		upload_queue_complete_callback : 'uploadQueueComplete',
		upload_error_callback : 'uploadError',
		upload_cancel_callback : 'uploadCancel',
		auto_upload : false
	})
}



有一点要提醒,要当心这个upload_script属性,这个值是一个相对地址,是swf文件相对于上传功能文件的路径。这个很容易搞错我这个包里upload.jsp就是上传功能,看代码就知道了,很原始的一个文件上传。

再就是如果上传过程中是404错误,一般是就是这个upload_script属性设置错误,如果是500错误就是上传文件(upload.jsp)出错。


具体的配置等等就看官网的论坛吧,常见问题基本都在那里了。
分享到:
评论
15 楼 gava 2008-04-15  
这个有问题,为啥不把Filedata改成小写啊,对于bean的定义,这个东西映射不上去。
用2.0.2版本的,虽然文件名称可以修改了,但是与webwork的上传集成有问题,只能传一个,然后swf收不到webwork的返回状态,一切停止,唉!!有好方法吗?
14 楼 shenxiaolei 2008-01-25  
正想用这个东西.不错.谢谢楼主分享
13 楼 hax 2007-11-13  
myreligion 写道
不错,呵呵,谢谢分享。

另外给javaeye提一个小建议:能不能开发一个小演示平台,大家可以把一些小的代码片段放过去执行,好比这个帖子,就不用我们在自己搭环境看实际效果了:)


建议是好的,但是我猜robbin同志不一定能马上实现,因为这牵涉较多的安全问题。要把上传代码隔离在一个单独的域中(例如sandbox.iteye.com)。

目前来说,对于小示例,可以使用jindw在帖子里使用过的data协议的技巧,但是这个技巧ie不支持。
12 楼 hanshen 2007-11-13  
你的测试环境有问题
tomcat和resin的jsp不通用,还有jdk也不完全通用
11 楼 yaohongmei 2007-11-06  
500错误就是上传文件(upload.jsp)出错,upload.jsp哪里有问题
10 楼 wangjie_mkog 2007-11-06  
今天我使用了你的这个FLASH上传东东,发现获取不了文件名,后来把上传的数据输出来发现提交的数据与其它的FORM提交的格式确实有点不同,这是我上传数据的一部份------------Ef1Ij5Ef1Ij5cH2cH2ei4ae0ae0Ij5
Content-Disposition: form-data; name="Filename"

100_2174.JPG
------------Ef1Ij5Ef1Ij5cH2cH2ei4ae0ae0Ij5
Content-Disposition: form-data; name="Filedata"; filename="100_2174.JPG"
Content-Type: application/octet-stream

??矱xif  MM *          ?       ?             ?      ?(              噄        "L
你好像是先把文件名发过去,再形成FORM数据,不知道怎么去掉那个前面的文件名,???                    
9 楼 zjh666qq 2007-10-01  
好东西,谢谢楼主
8 楼 aaa 2007-09-29  
怎么用不了的
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));
这一行出错
7 楼 constant 2007-09-29  
先顶,再试!
6 楼 kakaci 2007-08-28  
我用的是struts,那个文件路径不知道应该怎么设置。
5 楼 benben 2007-08-25  
请问一下呀,怎么样才能够得到所选的文件的路径呀?您可以发邮件通知我wangjinqing_1984@yahoo.com.cn谢谢
4 楼 benben 2007-08-25  
我请问一下,如何才能够得到那个文件的路径,谢谢
3 楼 shinwell 2007-08-09  
注意, 在flash8下有问题, 要用flash9.
2 楼 fzx209 2007-08-08  
用起来果然很方便。
1 楼 myreligion 2007-08-08  
不错,呵呵,谢谢分享。

另外给javaeye提一个小建议:能不能开发一个小演示平台,大家可以把一些小的代码片段放过去执行,好比这个帖子,就不用我们在自己搭环境看实际效果了:)

相关推荐

    dark亲测可用的一个swfupload与java整合的小例子

    这个“dark亲测可用”的小例子展示了如何将SWFUpload与Java后端进行整合,以实现一个完整的文件上传解决方案。下面将详细解释这个整合过程中的关键知识点。 1. **SWFUpload**: - SWFUpload是一个基于Flash的文件...

    swfUpload 上传例子

    这个组件利用了Flash技术来绕过浏览器的一些限制,比如JavaScript通常不能处理大文件的上传或者一次上传多个文件。SwfUpload 可以在不显著增加用户界面复杂性的情况下提供高级的上传体验。 ### 1. SwfUpload 的工作...

    swfupload+struts2多文件上传的例子

    SWFUpload是一款开源的Flash上传组件,它允许用户在不离开当前页面的情况下上传多个文件。通过在浏览器上嵌入一个小型的Flash对象,SWFUpload提供了一种优雅的多文件上传解决方案,同时还能显示上传进度,提高用户...

    jsp 的swfupload上传例子 v2.1版本

    - **多文件选择**:SwfUpload 支持用户一次性选择多个文件进行上传,减少了用户操作的步骤。 - **进度条显示**:在上传过程中,SwfUpload 可以显示每个文件的上传进度,让用户了解上传状态。 - **取消上传**:如果...

    swfupload实例]SWFUpload_java实例.doc

    SWFUpload是一个强大的Flash和JavaScript组件,用于实现浏览器上的多文件无刷新上传功能。通过利用Flash技术,它能够跨浏览器和平台提供一致的用户体验,同时提供了丰富的事件处理机制,允许开发者自定义上传过程中...

    四、struts2+swfUpload例子二

    SwfUpload则是一款流行的JavaScript和Flash插件,用于实现文件上传功能,它支持多文件选择、进度条显示和后台处理等特性。在这个"四、struts2+swfUpload例子二"中,我们将深入探讨如何将这两者结合,以实现高效的...

    三、struts2+swfUpload简单例子

    SwfUpload则是一个JavaScript和Flash组件,它允许用户在后台上传多个文件,无需刷新页面。这个"三、struts2+swfUpload简单例子"很可能是关于如何集成这两个技术来创建一个高效的文件上传功能的教程。 在集成Struts2...

    SwfUploadDome

    SwfUpload是一款流行的JavaScript与Flash结合的组件,能够提供非阻塞式的文件上传体验,尤其适用于需要批量上传大文件的场景。这个例子展示了如何将SwfUpload与后端服务器进行交互,处理文件上传。 SwfUpload插件的...

Global site tag (gtag.js) - Google Analytics