代码改变生活

欢迎各位提供意见

文件下载
//引用命名空间
using System.IO;
using System.Text;
using System.Web;

// 文件下载
public static bool DownloadFile(string path)
        {
            HttpRequest request = HttpContext.Current.Request;
            HttpResponse response = HttpContext.Current.Response;
            try
            {
                FileInfo info = new FileInfo(HttpContext.Current.Server.MapPath(path));
                if (info.Exists)
                {
                    string name = info.Name;
                    string extension = info.Extension;
                    name = name.Substring(0, name.Length - extension.Length);
                    while (HttpUtility.UrlEncode(name + extension, Encoding.UTF8).Length > 0x9c)
                    {
                        name = name.Substring(0, name.Length - 1);
                    }
                    name = HttpUtility.UrlEncode(name + extension, Encoding.UTF8);
                    response.Clear();
                    if (info.Length < 0xfa000L)
                    {
                        response.ContentType = "application/octet-stream";
                        response.AddHeader("Content-Disposition", "attachment;filename=" + name);
                        response.WriteFile(info.FullName);
                    }
                    else
                    {
                        FileStream input = new FileStream(HttpContext.Current.Server.MapPath(path), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                        BinaryReader reader = new BinaryReader(input);
                        try
                        {
                            long length = input.Length;
                            long num2 = 0L;
                            int count = 0x2800;
                            if (request.Headers["Range"] != null)
                            {
                                response.StatusCode = 0xce;
                                num2 = Convert.ToInt64(request.Headers["Range"].Split(new char[] { '=', '-' })[1]);
                            }
                            response.AddHeader("Content-Length", (length - num2).ToString());
                            if (num2 != 0L)
                            {
                                response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", num2, length - 1L, length));
                            }
                            response.ContentType = "application/octet-stream";
                            response.AddHeader("Content-Disposition", "attachment;filename=" + name);
                            reader.BaseStream.Seek(num2, SeekOrigin.Begin);
                            int num4 = ((int)Math.Floor((double)(((double)(length - num2)) / ((double)count)))) + 1;
                            for (int i = 0; i < num4; i++)
                            {
                                if (response.IsClientConnected)
                                {
                                    response.BinaryWrite(reader.ReadBytes(count));
                                    response.Flush();
                                }
                                else
                                {
                                    i = num4;
                                }
                            }
                        }
                        catch
                        {
                            return false;
                        }
                        finally
                        {
                            reader.Close();
                            input.Close();
                        }
                    }
                }
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014424282/article/details/73162703
文章标签: net
个人分类: net
想对作者说点什么? 我来说一句

vb文件下载系统(设计说明)

2008年09月23日 12KB 下载

文件下载上传 文件下载上传

2009年06月02日 1.31MB 下载

Asp.net文件下载

2011年07月25日 1KB 下载

C#FTP TCP文件下载

2009年02月17日 371KB 下载

admexs.dll

2009年07月18日 29KB 下载

convlog.exe 文件下载

2009年07月18日 62KB 下载

jawt.dll下载

2010年01月14日 1KB 下载

infoctrs.dll 文件下载

2009年07月18日 9KB 下载

基于servlet的文件下载代码

2017年11月17日 3KB 下载

没有更多推荐了,返回首页

不良信息举报

文件下载

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭