三种下载文件的办法

来源:互联网 发布:汉诺塔循环算法java 编辑:程序博客网 时间:2024/05/05 09:31
 

在网站的制作中经常需要开发下载文件的功能,下面三种下载文件的办法:
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, 0, 1024);
            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();//结束文件下载
该方法有下载提示框,服务器端可以知道何时下载完毕。

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被造谣毁名誉怎么办 眼睛得了麦粒疹怎么办 公告牌证作废怎么办 宝宝吃了护臀膏怎么办 八字五行同类强怎么办? 重装系统出现两个系统盘怎么办 看视频手机发烫怎么办 dhcp获取ip失败怎么办 苹果笔记本打不出数字怎么办 系统盘读不出来怎么办 waifai密码忘了怎么办 window xp忘记密码怎么办 winxp密码忘了怎么办 xp电脑密码忘记怎么办 xp桌面图标有阴影怎么办 联想电脑忘记登录密码怎么办 xp系统忘掉密码怎么办 xp密码忘记了怎么办 电脑忘记开机密码怎么办 注销了win7用户名怎么办 xp启动后黑屏怎么办 开机要按esc怎么办 excel产品激活失败怎么办 米粉卡激活失败怎么办 电脑死机ppt保存怎么办 电脑装系统黑屏怎么办 电脑c盘无法访问怎么办 d盘变成ntfs怎么办 系统重装卡住了怎么办 系统关机没反应怎么办 232串口打开失败怎么办 逆水寒cpu不支持怎么办 显卡被禁用了怎么办 vmvare注册错了怎么办 电脑主机未成功启动怎么办 主机未成功启动怎么办 电脑主机未能成功启动怎么办 虚拟机没有自带怎么办 错误连接为720怎么办 dns错误不能上网怎么办 家里无线用不了怎么办