Silverlight专题(10)-WCF通信(2)
2008-10-27 11:49:08 来源:WEB开发网在上文我粗略的介绍了如何创建WCF Service,并在客户端调用生成的WCF Service来取得数据
问题:
调用WCF Service的时候,并没有一个DownloadProcessChanged之类的事件来反馈已经上传了多少
那么我们如何来实现在客户端实时展示当天已经上传了多少呢?
解决方案:
我们可以把文件分成很多块,逐次上传一小部分(比如2K,4K,8K等等)
1。首先我们还是按照Silverlight专题(9)-WCF通信(1)这个教程中所示的先创建个新的Silverlight工程
并添加进一个Silverlight-Enabled WCF Service(我取名为DownloadService,以前随便去的名字,懒得改了)
其里面含有的操作契约如下:
1 [ServiceContract(Namespace = "")]
2 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
3 public class DownloadService
4 {
5 [OperationContract]
6 public string UploadImg(string fileName, byte[] fileData, bool firstChunk, bool lastChunk)
7 {
8 if (!File.Exists(@HostingEnvironment.ApplicationPhysicalPath + @"/Uploads/" + fileName))
9 {
10 string tmpExtension = "_tmp";
11 string tempFileName = fileName + tmpExtension;
12 if (firstChunk)
13 {
14 fileName += tmpExtension;
15 if (File.Exists(@HostingEnvironment.ApplicationPhysicalPath + tempFileName))
16 {
17 File.Delete(@HostingEnvironment.ApplicationPhysicalPath + tempFileName);
18 }
19 }
20
21 FileStream fs = File.Open(@HostingEnvironment.ApplicationPhysicalPath + tempFileName, FileMode.Append);
22 fs.Write(fileData, 0, fileData.Length);
23 fs.Close();
24
25 if (lastChunk)
26 {
27 //Rename file to original file
28 File.Move(@HostingEnvironment.ApplicationPhysicalPath + tempFileName, @HostingEnvironment.ApplicationPhysicalPath + "/ClientBin/Uploads/" + fileName);
29 }
30 }
31
32 return "./Uploads/" + fileName;
33 }
34 }
Tags:Silverlight 专题 WCF
编辑录入:爽爽 [复制链接] [打 印]- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››Silverlight for Symbian
- ››专题功能优化 for V7.5 SP3 优化包
- ››专题css详解
- ››Silverlight3系列(四)数据绑定 Data Binding 1
- ››WCF技术剖析之三十:一个很有用的WCF调用编程技巧...
- ››专题功能优化 for v7.5 sp3
更多精彩
赞助商链接