深爱那片海 发表于 2015-1-16 22:20:35

ASP.NET网站制作之Silverlight 完成下载文件功能

不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……比来一向在做Siverlight的有关的项目,明天做了一个下载功效,也是经由网上找的各类举措才失掉以下的了局,我来总结一下。假如哪有不合错误的大概哪块有毛病的还请列位举行指出来!感谢!
  在sl中的下载,我以为很难做到像c#中的下载。能够弹出一个对话框举行保留大概另存为的模样。
  上面是经由过程:WebClientDownHandler文件举行的!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
namespace E9.Server
{
    /// <summary>
    /// Summary description for WebClientDownHandler
    /// </summary>
    public class WebClientDownHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            String fileName = context.Request.QueryString["fileName"]; //客户端保留的文件名
            fileName=HttpUtility.UrlDecode(fileName);
            String filePath = context.Server.MapPath("data/" + fileName); //路径
            FileInfo fileInfo = new FileInfo(filePath);
            if (fileInfo.Exists)
            {
                byte[] buffer = new byte;
                context.Response.Clear();
                FileStream iStream = File.OpenRead(filePath);
                long dataLengthToRead = iStream.Length; //猎取下载的文件总巨细
                context.Response.ContentType = "application/octet-stream";
                context.Response.AddHeader("Content-Disposition", "attachment;  filename=" +
                                   HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
                while (dataLengthToRead > 0 && context.Response.IsClientConnected)
                {
                    int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(102400));//读取的巨细
                    context.Response.OutputStream.Write(buffer, 0, lengthRead);
                    context.Response.Flush();
                    dataLengthToRead = dataLengthToRead - lengthRead;
                }
                context.Response.Close();
                context.Response.End();
            }
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
  当我们新建玩这个类的时分,就能够在你点击下载的按钮那边写事务来挪用这个类举行下载文件!可是前提是你的文件是存在流动的一个文件夹中的.只要找到路径才能够下载的。
               private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
        {
                       string fileaddressofneeded = “1.txt”;//必要下载的文件名字
            HyperlinkButton hlbutton = sender as HyperlinkButton;
            var client = new WebClient();            
            var u= new Uri(String.Format("{0}/http://www.ckuyun.com/Handler/DownLoadFileHandler.ashx?FileName={1}" ,client.BaseAddress, fileaddressofneeded),UriKind.RelativeOrAbsolute);
            hlbutton.NavigateUri = u;
        }
  在页面大将你的hyperlinkbutton的属性设置为:_blank如许就是弹出另外一个界面了,以是如许一个复杂的下载就能够了,假如谁有新的举措大概好的办法能够拿出来,让人人参考一下!感谢!
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。

精灵巫婆 发表于 2015-1-19 09:06:23

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

因胸联盟 发表于 2015-2-3 12:30:38

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

蒙在股里 发表于 2015-2-9 00:14:17

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

活着的死人 发表于 2015-2-26 15:11:00

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

不帅 发表于 2015-3-8 15:49:13

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

海妖 发表于 2015-3-16 03:44:37

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

小魔女 发表于 2015-3-22 19:55:56

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
页: [1]
查看完整版本: ASP.NET网站制作之Silverlight 完成下载文件功效