网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > Silverlight > 正文

Silverlight实现下载文件功能

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

最近一直在做Siverlight的有关的项目,今天做了一个下载功能,也是经过网上找的各种办法才得到以下的结果,我来总结一下。如果哪有不对的或者哪块有错误的还请各位进行指出来!谢谢!
在sl中的下载,我认为很难做到像c#中的下载。可以弹出一个对话框进行保存或者另存为的样子。

下面是通过:WebClientDownHandler文件进行的!

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Web; 
  5. using System.IO; 
  6. namespace E9.Server 
  7.     /// <summary> 
  8.     /// Summary description for WebClientDownHandler 
  9.     /// </summary> 
  10.     public class WebClientDownHandler : IHttpHandler 
  11.     { 
  12.         public void ProcessRequest(HttpContext context) 
  13.         { 
  14.             String fileName = context.Request.QueryString["fileName"]; //客户端保存的文件名 
  15.             fileName=HttpUtility.UrlDecode(fileName); 
  16.             String filePath = context.Server.MapPath("data/" + fileName); //路径 
  17.             FileInfo fileInfo = new FileInfo(filePath); 
  18.             if (fileInfo.Exists) 
  19.             { 
  20.                 byte[] buffer = new byte[102400]; 
  21.                 context.Response.Clear(); 
  22.                 FileStream iStream = File.OpenRead(filePath); 
  23.                 long dataLengthToRead = iStream.Length; //获取下载的文件总大小 
  24.                 context.Response.ContentType = "application/octet-stream"
  25.                 context.Response.AddHeader("Content-Disposition""attachment;  filename=" + 
  26.                                    HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); 
  27.                 while (dataLengthToRead > 0 && context.Response.IsClientConnected) 
  28.                 { 
  29.                     int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(102400));//'读取的大小 
  30.                     context.Response.OutputStream.Write(buffer, 0, lengthRead); 
  31.                     context.Response.Flush(); 
  32.                     dataLengthToRead = dataLengthToRead - lengthRead; 
  33.                 } 
  34.                 context.Response.Close(); 
  35.                 context.Response.End(); 
  36.             } 
  37.         } 
  38.         public bool IsReusable 
  39.         { 
  40.             get 
  41.             { 
  42.                 return false
  43.             } 
  44.         } 
  45.     } 

当我们新建玩这个类的时候,就可以在你点击下载的按钮那里写事件来调用这个类进行下载文件!但是条件是你的文件是存在固定的一个文件夹中的.只有找到路径才可以下载的。

  1. private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
  2.         { 
  3.                        string fileaddressofneeded = “1.txt”;//需要下载的文件名字 
  4.             HyperlinkButton hlbutton = sender as HyperlinkButton; 
  5.             var client = new WebClient();             
  6.             var u= new Uri(String.Format("{0}/http://www.cnblogs.com/Handler/DownLoadFileHandler.ashx?FileName={1}" ,client.BaseAddress, fileaddressofneeded),UriKind.RelativeOrAbsolute); 
  7.             hlbutton.NavigateUri = u; 
  8.         } 

在页面上将你的hyperlinkbutton 的属性设置为:_blank 这样就是弹出另一个界面了,所以这样一个简单的下载就可以了,如果谁有新的办法或者好的方法可以拿出来,让大家参考一下!谢谢!

设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师