| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1364 人关注过本帖
标题:我的下载功能不能下载大文件
只看楼主 加入收藏
liuran
Rank: 1
等 级:新手上路
帖 子:18
专家分:8
注 册:2009-3-5
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:4 
我的下载功能不能下载大文件
问题是这样的:我的下载功能如果在vs上直接浏览的话是没有问题,但是我用IIS发布以后 ,如果文件大了就不能下载了,我试了试200M以上的就不能了,也不报错,就是一直在加载网页。我怀疑是iss哪的问题可是不知道怎样解决,希望高手们的帮助?我的下载方法是这样的:

  private void FileDownload(string file)
  {
 string fileName = file.Substring(file.LastIndexOf('/')+1);
  string filePath = Server.MapPath(file);//繚噤
  FileInfo fileInfo = new FileInfo(filePath);
  Response.Clear();
  Response.ClearContent();
  Response.ClearHeaders();
  Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
  //Response.AddHeader("Content-Disposition", "attachment;");
  Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  Response.AddHeader("Content-Transfer-Encoding", "binary");
  Response.ContentType = "application/octet-stream";
  Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  Response.WriteFile(fileInfo.FullName);
  Response.Flush();
  Response.End();
(DownloadFile.FullName);
  Response.Flush();
  Response.End();
  }

web.config我是这样设置的<httpRuntime maxRequestLength="2097151" executionTimeout="120" />
搜索更多相关主题的帖子: 文件 
2010-08-28 16:48
烟雨袅袅
Rank: 6Rank: 6
来 自:星空雨际
等 级:侠之大者
威 望:1
帖 子:430
专家分:494
注 册:2007-11-26
收藏
得分:5 
回复 楼主 liuran
试试看,如果有效,在这里回个贴吧  
protected void ResponseFile(string path)//传入服务端文件及路径 大文件下载原理是把文件切成小段数据流下载,微软msdn给出了大文件下载的示例
    {
         iStream = null;//声明文件流
        byte[] buffer = new Byte[10000];//声明缓存区
        int length;//读入缓冲区中的总字节数
        long dataToRead;//剩余要传输到客户端的总字节数
        string filename = (path);//获取文件名及扩展名

        try
        {   //使用指定的路径、创建模式、读/写权限和共享权限
            iStream = new (path, , , );
            dataToRead = iStream.Length;
            Response.ContentType = "application/octet-stream";//指定ContentType
            //Content-Disposition attachment表示以附件方式下载    HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8))解决中文乱码问题
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
            while (dataToRead > 0)
            {
                if (Response.IsClientConnected)//客户端是否连接
                {
                    length = iStream.Read(buffer, 0, 10000);//读取流到缓存区,
                    Response.OutputStream.Write(buffer, 0, length);//缓存区复制到当前流
                    Response.Flush(); //缓冲区数据先发送到客户端
                    buffer = new Byte[10000];
                    dataToRead = dataToRead - length;
                }
                else
                {
                    dataToRead = -1;
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write("文件下载时出现错误!" + ex.Message);
        }
        finally
        {
            if (iStream != null)
            {
                iStream.Close();
            }
        }
    }
2010-08-29 03:23
Issac_abc
Rank: 4
来 自:河南
等 级:业余侠客
威 望:2
帖 子:155
专家分:218
注 册:2010-6-17
收藏
得分:5 
回 烟雨袅袅  呵呵  试了下,可以的哦!
2010-08-31 10:41
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:5 
一次性下载过大的文件,浏览器当然不能承受,所以应该对文件进行分割下载的方式,就像2楼的那样。

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-09-01 10:04
ytdl
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-8-31
收藏
得分:5 
有时空间对下载文件大小有限制,文件分卷压缩就好了
2010-09-03 11:50
快速回复:我的下载功能不能下载大文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031398 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved