推荐一个Silverlight多文件(大文件)上传的开源项目

     在Silverlight上实现文件上传的例子在网上的还不多,特别是多文件上传和大文件上传的例子就更少了。当然
那些商品软件公司的产品除外。

     目前的CodePlex上就有这样一个项目,其链接:http://www.codeplex.com/SLFileUpload/ ,他的个人主
站链接:http://www.michielpost.nl/    
    
     我在本地下载运行其代码后,发现“果然”很好用,而且代码写的也很规范。当然其也是免费的,但作者并不
绝各种名义上的“捐助(Donate)”。

    下面就是其“汉化”后的运行截图,首先是多文件上传
    
              
   

     然后是大文件上传:
    
              

    根据作者的README文件,其支持下面几个初始化参数:    
   

    MaxFileSizeKB:  File size in KBs.
    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中,其支持两种初始化方式,一种是:

        
   
<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/mpost.SilverlightMultiFileUpload.xap" MinimumVersion="2.0.30523"  Width="415" Height="280"   InitParameters="MaxFileSizeKB=1000,MaxUploads=2,FileFilter=,CustomParam=1,DefaultColor=LightBlue"  />

 
    另一种是在ServiceReferences.ClientConfig中进行文件配置:    
   

< appSettings >
       
< 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):    


/// <summary>
/// 加载配置参数 then from .Config file
/// </summary>
/// <param name="initParams"></param>
private void LoadConfiguration(IDictionary<stringstring> initParams)
{
    
string tryTest = string.Empty;

    
//加载定制配置信息串
    if (initParams.ContainsKey("CustomParam"&& !string.IsNullOrEmpty(initParams["CustomParam"]))
        _customParams 
= initParams["CustomParam"];

    
if (initParams.ContainsKey("MaxUploads"&& !string.IsNullOrEmpty(initParams["MaxUploads"]))
    {
        
int.TryParse(initParams["MaxUploads"], out _maxUpload);            
    }

    
if (initParams.ContainsKey("MaxFileSizeKB"&& !string.IsNullOrEmpty(initParams["MaxFileSizeKB"]))
    {
        
if (int.TryParse(initParams["MaxFileSizeKB"], out _maxFileSize))
            _maxFileSize 
= _maxFileSize * 1024;
    }

    
if (initParams.ContainsKey("FileFilter"&& !string.IsNullOrEmpty(initParams["FileFilter"]))
        _fileFilter 
= initParams["FileFilter"];



    
//从配置文件中获取相关信息
    if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["MaxFileSizeKB"]))
    {
        
if (int.TryParse(ConfigurationManager.AppSettings["MaxFileSizeKB"], out _maxFileSize))
            _maxFileSize 
= _maxFileSize * 1024;
    }

    
    
if(!string.IsNullOrEmpty(ConfigurationManager.AppSettings["MaxUploads"]))
        
int.TryParse(ConfigurationManager.AppSettings["MaxUploads"], out _maxUpload);

    
if(!string.IsNullOrEmpty( ConfigurationManager.AppSettings["FileFilter"]))
        _fileFilter 
= ConfigurationManager.AppSettings["FileFilter"];

}


  好了,今天的内容就先到这里了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值