Silverlight中用WCF实现文件快速上传(一、基本方法)
来源:互联网 发布:如何mac运行exe软件 编辑:程序博客网 时间:2024/05/01 21:47
在Silverlight中可能通过服务上传文件。通过服务上传文件可以比较方便地实现异步上传、分块上传、进度显示等等功能。因此,“Silverlight + 服务”组合可以实现比较强大类似于C/S模式中的那种上传功能。下面详细说明实现步骤。
1. 创建Silverlight应用程序。
这个是基本能力,不会的先找资料学习一下吧。
假定创建的解决方案为:UploadFiles。默认情况下存在两个项目:UploadFiles和UploadFiles.Web。
2. 添加WCF服务。
在UploadFiles.Web项目中添加WCF服务:右键→添加→新建项→选“启用 Silverlight 功能的 WCF 服务”,如果VS是英文的则为“Silverlight-enabled WCF Service”。
3. WCF服务的代码:
4. Silverlight中的上传执行代码
在MainPage.xaml中添加一个执行上传的按钮,后台执行代码如下:
辅助类:
5. 上传数据尺寸配置
默认情况下,WCF只允许最大16KB的数据块上传。按此尺寸,实测上传速度很慢。如果要修改尺寸,则要修改Web.config文件。
注意:是修改UploadFiles.Web中的Web.config,而不是UploadFiles中的ServiceReferences.ClientConfig。最开始我曾以为是修改后者,结果被困了好久,汗颜!
网上有好多文章讲修改参数的,但无一指明是修改.Web项目中的Web.config,让我困惑了好久,最后在一个英文网页中找到的答案……。
修改后的内容如下:
修改的结果是允许最大2MB的数据块上传。Sunpire网友(参见参考文献2)提到的要增加24KB冗余的问题,我在实测中没有遇到。即:Sunpire网友的文章中提到<customBinding>要设置2MB+24KB,才能上传2MB数据的情况我没有遇到。我实际设置2MB就能上传2MB数据。当然,我没有象Sunpire网友那样去做那么多测试,只做了1MB和2MB的测试。
6. 总结
按照上述方法,可以实现各种文件快速上传。小文件上传几乎是瞬间的事,大文件也很快。
缺点:上传时会一次性的把整个文件读入内存。进一步的解决方案是边读边上传。
参考文献:
[1]agile 的《Silverlight 3 中使用WCF上传文件 (简单进度条展示)》:http://my.oschina.net/agile/blog/2130
[2]Sunpire 的《Silverlight+WCF文件上传,含分段大小调节(WCF 16KB配置)、压缩Buffer调节、速度指示、批量等》:http://www.soaspx.com/dotnet/silverlight/silverlight_20100321_3357.html
- Silverlight中用WCF实现文件快速上传(一、基本方法)
- Silverlight中用WCF实现文件快速上传(一、基本方法)
- Silverlight中用WCF实现文件快速上传(二、改进)
- Silverlight WCF 上传实现
- WCF上传文件方法总结
- Silverlight+WCF上传文件(文件分段,百分比进度条显示)
- WCF实现文件的上传与下载
- WCF实现的文件上传和下载
- Java中用Socket实现文件上传
- 在struts2中用fileupload实现文件上传
- iPHone 中用 NSURLRequest 实现文件上传
- 在struts2中用fileupload实现文件上传
- 使用silverlight实现多文件上传
- django 快速实现文件上传
- django 快速实现文件上传
- django 快速实现文件上传
- Silverlight+WCF实现聊天功能
- Servlet实现基本文件上传
- sturts1 and struts2
- 管理感悟:管理者要有一颗平常心
- VC建立与修改共享内存区示例代码
- 各种塑料制品
- 网页变灰白的方法-最简单的方法
- Silverlight中用WCF实现文件快速上传(一、基本方法)
- JAVA连接sql server 2005 数据库心得
- SQL查询每行中最大值的技巧
- Silverlight中用WCF实现文件快速上传(二、改进)
- MFC消息顺序
- MFC 自定义消息四步曲
- 关于Java的几个问题
- 购物车的实现原理
- 得到单击对象的ID