博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
下载(打开)PDF文件 代码
阅读量:6880 次
发布时间:2019-06-27

本文共 1821 字,大约阅读时间需要 6 分钟。

网上的代码很多,但现在大多数都是Framework 3.5的啦,对于2.0,2.5有的方法不是很兼容,花了半个小时才找到一个合适,现在记录如下:

注意:不适合网络路径,只适合本地文件, 网络路径请参考我另一篇Blog

public void DownloadFile(string strFileNamePath)    {        long chunkSize = 102400;        byte[] buffer = new byte[chunkSize];        //long dataToRead=0;        FileStream stream = null;        try        {            FileInfo info = new FileInfo(strFileNamePath);            Response.Clear();            stream = new FileStream(strFileNamePath, FileMode.Open, FileAccess.Read, FileShare.Read);            Response.Clear();            Response.AddHeader("Content-Length", stream.Length.ToString());            Response.ContentType = "application/pdf";            long fileLength = stream.Length;            int size = 10240;//10K一--分块下载,10K为1块            byte[] readData = new byte[size];            if (size > fileLength)                size = Convert.ToInt32(fileLength);            long fPos = 0;            bool isEnd = false;            while (!isEnd)            {                if ((fPos + size) >= fileLength)                {                    size = Convert.ToInt32(fileLength - fPos);                    isEnd = true;                }                readData = new byte[size];                stream.Position = fPos;                stream.Read(readData, 0, size);                Response.BinaryWrite(readData);                Response.OutputStream.Flush();                fPos += size;            }            stream.Close();            Response.OutputStream.Close();            Response.End();//非常重要,没有这句的话,页面的HTML代码将会保存到文件中            Response.Close();        }        catch (Exception)        {            if (stream != null)            {                stream.Close();                stream = null;            }        }    }

 

 

转载于:https://www.cnblogs.com/gzh4455/archive/2012/09/18/2690759.html

你可能感兴趣的文章