最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
silverlight多文件断点续传实现代码
时间:2012-01-16 编辑:简简单单 来源:一聚教程网
在里面利用的是依赖属性的状态改变来时时更新一些数据,如已上传的文件大小,以及文件上传的状态等,由于代码很多,挑选部分类似的代码如下,后面将源代码公布。
代码如下 | 复制代码 |
/// NotifyPropertyChanged("BytesUploaded"); Percentage = (int)((value * 100) / _fileStream.Length); } private void NotifyPropertyChanged(string prop) public event PropertyChangedEventHandler PropertyChanged;
|
还有文件的上传时采用分块处理的,选择一块 byte[] buffer = new byte[4 * 4096]大小的内存,将文件分成N块如此大小的文件,在循环上传至最终完成。
此代码在FileUploader.cs中,这一块是最重要的,如下所示,
代码如下 | 复制代码 |
/// //文件是否上传完毕? if (_dataSent == _dataLength) //上传当前数据块 //通知上传进度修改 _client.ChannelFactory.Close();
|
再就是在上传的过程中需要一直判断文件是否被删除、完成或者中断,在FileUploader.cs中需要关注这段代码,
代码如下 | 复制代码 |
void _client_StoreFileAdvancedCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
|
其中需要限制文件大小,以及同时上传的文件数量需要关注mpost.SilverlightMultiFileUploadTestPage.aspx中的InitParameters参数,以前的也可以在配置文件中配置,如果要改成配置文件的形式可以更改代码Page.xaml.cs中的代码。
代码如下 | 复制代码 |
/// //加载定制配置信息串 if (initParams.ContainsKey("MaxUploads") && !string.IsNullOrEmpty(initParams["MaxUploads"])) if (initParams.ContainsKey("MaxFileSizeKB") && !string.IsNullOrEmpty(initParams["MaxFileSizeKB"])) if (initParams.ContainsKey("FileFilter") && !string.IsNullOrEmpty(initParams["FileFilter"]))
if(!string.IsNullOrEmpty( ConfigurationManager.AppSettings["FileFilter"])) }
|
其中还有其他的一些读者可以自己看代码调试运行试试,下面是运行的截图,环境是vs2010、silverlight4.0环境下。
相关文章
- PPT文件如何添加多个动画 06-25
- 利用PS将多个文件集合到一个文件当中 06-06
- IE7同时下载多个文件失败怎么办,IE7同时下载多个文件失败原因分析 09-12
- Python实现递归创建多级文件夹的例子 06-12
- shell多进程scp传文件的脚本 09-15
- git add 多个文件的格式介绍 04-02