zoukankan      html  css  js  c++  java
  • ASP NET页面下载程序

    在网站的制作中经常需要开发下载文件的功能,下面三种下载文件的办法:
    1、asp实现下载的代码
    <% 
    filename 
    = Request.QueryString("FileName")
    if filename = "" then
        Response.Write 
    "请输入filename参数,指定下载的文件名"
    else
        Response.ContentType 
    = "application/octet-stream"
        Response.AddHeader 
    "content-disposition""attachment; filename =" & filename
        Set FileStream 
    = Server.CreateObject("Adodb.Stream")
        FileStream.Mode 
    = 3
        FileStream.Type 
    = 1
        FileStream.Open
        FileStream.LoadFromFile( Server.MapPath(filename))

        Response.BinaryWrite( FileStream.Read )

        FileStream.Close()
        Set FileStream 
    = nothing
    end 
    if
    %>
    把上述代码存成asp类型的文件,使用时类似:download.asp?filename=a.gif。
    2、使用WebClient
    在下载按钮事件中加入如下代码
    System.Net.WebClient wc = new System.Net.WebClient();
            wc.DownloadFile( 
    "http://localhost/a.gif""c:\a.gif");
    上述代码会把服务器端的a.gif文件在没有任何提示的情况下下载的客户端的c盘,没有任何提示还是比较可怕的,不过有的时候确实需要这样做。该代码也可以在桌面程序运行。
    3、带有下载提示的ASP NET下载代码
    //打开要下载的文件
    System.IO.FileStream r = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
    //设置基本信息
            Response.Buffer = false;
            Response.AddHeader(
    "Connection""Keep-Alive");
            Response.ContentType 
    = "application/octet-stream";
            Response.AddHeader(
    "Content-Disposition""attachment;filename=" + System.IO.Path.GetFileName(FileName));
            Response.AddHeader(
    "Content-Length", r.Length.ToString());

            
            
    while (true)
            
    {
                
    //开辟缓冲区空间
                byte[] buffer = new byte[1024];
                
    //读取文件的数据
                int leng = r.Read(buffer, 01024);
                
    if (leng == 0)//到文件尾,结束
                    break;
                
    if (leng == 1024)//读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入
                    Response.BinaryWrite(buffer);
                
    else
                
    {
                    
    //读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块
                    byte[] b = new byte[leng];
                    
    for (int i = 0; i < leng; i++)
                        b[i] 
    = buffer[i];
                    Response.BinaryWrite(b);
                }

            }

            r.Close();
    //关闭下载文件
            Response.End();//结束文件下载

    该方法有下载提示框,服务器端可以知道何时下载完毕。
  • 相关阅读:
    html5+css3中的background: -moz-linear-gradient 用法 (转载)
    CentOS 安装Apache服务
    Linux 笔记
    CURL 笔记
    Spring Application Context文件没有提示功能解决方法
    LeetCode 389. Find the Difference
    LeetCode 104. Maximum Depth of Binary Tree
    LeetCode 520. Detect Capital
    LeetCode 448. Find All Numbers Disappeared in an Array
    LeetCode 136. Single Number
  • 原文地址:https://www.cnblogs.com/liughost/p/374085.html
Copyright © 2011-2022 走看看