在Silverlight上实现文件上传的例子在网上的还不多,特别是多文件上传和大文件上传的例子就更少了。当然那些商品软件公司的产品除外。
目前的CodePlex上就有这样一个项目,其链接:
[url]http://www.codeplex.com/SLFileUpload/[/url]
,他的个人主
站链接:
[url]http://www.michielpost.nl/[/url]
我在本地下载运行其代码后,发现“果然”很好用,而且代码写的也很规范。当然其也是免费的,但作者并不拒绝各种名义上的“捐助(Donate)”。
我在本地下载运行其代码后,发现“果然”很好用,而且代码写的也很规范。当然其也是免费的,但作者并不拒绝各种名义上的“捐助(Donate)”。
下面就是其“汉化”后的运行截图,首先是多文件上传:
然后是大文件上传:
根据作者的README文件,其支持下面几个初始化参数:
MaxUploads: Maximum number of simultaneous uploads
FileFilter: File filter, for example ony jpeg use: FileFilter=Jpeg (*.jpg) |*.jpg
CustomParam: Your custom parameter, anything here will be available in the WCF webservice
DefaultColor: The default color for the control, for example: LightBlue
当然,里面的服务端采用WCF方法。为了考虑在.net1框架上也可以使用,我在保留原有代码结构的基础上,将WCF 用ASMX格式拷贝了一份,经过编译,完成可以运行:)
同时为了便于大家阅读源码,我还加入了中文说明(源码中注释很少,而且是EN文)。下面就是其主要的几个类的定义和说明:
FileCollection 上传文件集合类,用于UI统一访问和操作:
Code
上传文件信息类:
Code
上传文件操作类(实现文件上传功能代码):
Code
服务端WCF代码如下(ASMX文件代码与其基本相同):
Code
当然在该DEMO中,其支持两种初始化方式,一种是:
另一种是在ServiceReferences.ClientConfig中进行文件配置:
< add key ="MaxFileSizeKB" value ="50" />
< add key ="FileFilter" value ="Photo's (*.jpg)|*.jpg" />
< add key ="FileFilter" value ="" />
< add key ="MaxUploads" value ="2" />
</ appSettings >
而加载顺序要是自上而下,代码段如下(摘自Page.xaml.cs):
Code
本文转自 daizhenjun 51CTO博客,原文链接:http://blog.51cto.com/daizhj/124341,如需转载请自行联系原作者