永发信息网

C# 文件下载 文件名带. 或者带空格下载报错

答案:1  悬赏:60  手机版
解决时间 2021-04-28 09:20

代码如下 

  现有文件1 ASP.NET再学习.txt  总路径 D://UpLoad/ASP.NET再学习.txt                文件2      新建 文本文档.txt 总路径 D://UpLoad/新建 文本文档.txt

   下载报错 。。由于出现错误 c00ce514 而导致此项操作无法完成。

 

   

 

  bool success = ResponseFile(Page.Request, Page.Response, FileName, path, 1024000); //FileName 为文件名  path为 文件总路径

 

 

  public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed)
        {
            try
            {
                FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                BinaryReader br = new BinaryReader(myFile);
                try
                {
                    _Response.AddHeader("Accept-Ranges", "bytes");
                    _Response.Buffer = false;
                    long fileLength = myFile.Length;
                    long startBytes = 0;

                    int pack = 10240; //10K bytes
                    //int sleep = 200;   //每秒5次   即5*10K bytes每秒
                    int sleep = (int)Math.Floor(Convert.ToDouble(1000 * pack / _speed)) + 1;
                    if (_Request.Headers["Range"] != null)
                    {
                        _Response.StatusCode = 206;
                        string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });
                        startBytes = Convert.ToInt64(range[1]);
                    }
                    _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString());
                    if (startBytes != 0)
                    {
                        _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength));
                    }
                    _Response.AddHeader("Connection", "Keep-Alive");
                    _Response.ContentType = "application/octet-stream";
                    _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8));

                    br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
                    int maxCount = (int)Math.Floor(Convert.ToDouble((fileLength - startBytes) / pack)) + 1;
                    for (int i = 0; i < maxCount; i++)
                    {
                        if (_Response.IsClientConnected)
                        {
                            _Response.BinaryWrite(br.ReadBytes(pack));
                            Thread.Sleep(sleep);
                        }
                        else
                        {
                            i = maxCount;
                        }
                    }
                }
                catch
                {
                    return false;
                }
                finally
                {
                    br.Close();
                    myFile.Close();
                }
            }
            catch
            {
                return false;
            }
            return true;
        }

最佳答案

path尝试使用 server.MapPath(path) 转换哈

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
五个人打一把伞为什么没有人打湿
怀孕20-30天左右一直都有感冒现象而且身体体
N86到元旦那天多少钱呀?
武林外传绑定符怎么不能用了?
怎么提升下五子棋的能力.最好来个下载网站
泉港区峰尾镇的邮政编码是多少,急需
塔桥村在什么地方啊,我要过去处理事情
怎么加战队
这样的QQ秀上哪找
冲黑钻能不能解决DNF号被封的问题?
3000左右的电脑配置什么样的好
独生子女,男孩女孩一样么?
想在大连地区找一所职高,最好关于室内装潢,
电脑硬盘的问题
不能接收离线文件
推荐资讯
求教:dnf鬼泣加不屈意志后满月 十字 能被打断
网页脚码程序错误怎么处理啊
异常糖链糖蛋白检测表准数是多少
这是 什么字体哇
mp4坏了去哪修?
NBA各位置的体重最高的球员分别是谁啊
好的羊奶粉有哪些牌子,好喝的羊奶粉品牌有哪
一至十级伤残是几级严重
各位帮忙看一道数学题
火箭今年能进季后赛第二轮吗
DNF武器攻速的问题
现在有什么好玩的3D网游除了DN
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?