C#下载文件和将文件转换为数据流下载的示例

转载 2011年01月20日 22:59:00

protected void Page_Load(object sender, EventArgs e)
    {
        string file = Request["file"];
        if (string.IsNullOrEmpty(file))
            return;
        string filepath = Server.MapPath("~/Download/" + file);
        if (File.Exists(filepath))
            //DownLoadStreamFile(filepath);
            ToOpen(filepath, "");
        Response.End();
    }

    /// <summary>
    /// 下载文件
    /// </summary>
    /// <param name="serverfilpath"></param>
    /// <param name="filename"></param>
    public static void ToDownload(string serverfilpath, string filename)
    {
        FileStream fileStream = new FileStream(serverfilpath, FileMode.Open);
        long fileSize = fileStream.Length;
        HttpContext.Current.Response.ContentType = "application/octet-stream";
        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=/"" + UTF_FileName(filename) + "/";");
        ////attachment --- 作为附件下载
        ////inline --- 在线打开
        HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
        byte[] fileBuffer = new byte[fileSize];
        fileStream.Read(fileBuffer, 0, (int)fileSize);
        HttpContext.Current.Response.BinaryWrite(fileBuffer);
        fileStream.Close();
        HttpContext.Current.Response.End();
    }

    /// <summary>
    /// 打开文件
    /// </summary>
    /// <param name="serverfilpath"></param>
    /// <param name="filename"></param>
    public static void ToOpen(string serverfilpath, string filename)
    {
        FileStream fileStream = new FileStream(serverfilpath, FileMode.Open);
        long fileSize = fileStream.Length;
        HttpContext.Current.Response.ContentType = "application/octet-stream";
        HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=/"" + UTF_FileName(filename) + "/";");
        HttpContext.Current.Response.AddHeader("Content-Length", fileSize.ToString());
        byte[] fileBuffer = new byte[fileSize];
        fileStream.Read(fileBuffer, 0, (int)fileSize);
        HttpContext.Current.Response.BinaryWrite(fileBuffer);
        fileStream.Close();
        HttpContext.Current.Response.End();
    }

    private static string UTF_FileName(string filename)
    {
        return HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
    }

    /// <summary>
    /// 下载文件数据流
    /// </summary>
    /// <param name="serverfilpath"></param>
    public static void DownLoadStreamFile(string serverfilpath)
    {
        int blocksize = 1024 * 100;
        byte[] buffer = new byte[blocksize];
        byte[] fileHeader = new byte[101];

        int startindex = 0;
        int bytesread = 0;
        int bytesfinish = 0;
        int filesize = 0;
        string headerText = string.Empty;
        BinaryReader bReader = null;

        bReader = new BinaryReader(File.OpenRead(serverfilpath));
        filesize = Convert.ToInt32(bReader.BaseStream.Length);

        while (bytesfinish < filesize)
        {
            if (bytesfinish + blocksize < filesize)
                bytesread = bReader.Read(buffer, startindex, blocksize);
            else
                bytesread = bReader.Read(buffer, startindex, filesize - bytesfinish);

            bytesfinish += bytesread;
            HttpContext.Current.Response.OutputStream.Write(buffer, 0, bytesread);
        }
        bReader.Close();
        HttpContext.Current.Response.End();
    }

下载/保存/读取 文件,并转成流输出

android 文件下载、文件读取、文件保存操作 使用demo
  • u013472738
  • u013472738
  • 2016年08月26日 00:36
  • 1322

数据流直接生成zip压缩包(文件主要是对csv格式)

最近在做爬虫项目的时候遇到了点问题,就是从别人的服务器请求后获得的响应byte[]数据,并不想在本地服务器进行转存后再下载,所以就尝试了直接生成下载包。 public void export_1 (...
  • csdn15000505054
  • csdn15000505054
  • 2016年08月03日 10:09
  • 2067

使用GZIP和Zip压缩Java数据流(转)

本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压 综述 许多信息...
  • congcongsuiyue
  • congcongsuiyue
  • 2014年12月24日 15:49
  • 1051

C#下文件转换到二进制流再到十六进制的转换流程

C#下文件转换到二进制流再到十六进制的转换流程
  • energeticsunxiaocong
  • energeticsunxiaocong
  • 2015年07月20日 15:44
  • 979

c#将pdf文件转换成flash swf

来自:http://outofmemory.cn/code-snippet/1930/c-jiang-pdf-file-zhuanhuancheng-flash-swf 主要是为了在线浏览pdf文件...
  • ArvinStudy
  • ArvinStudy
  • 2013年02月04日 17:04
  • 1534

C# 将PDF文件转换为word格式

Pdf(Portable Document Format)意为“便携式文档格式”,是现在最流行的文件格式之一,它有很多优点如:尺寸较小、阅读方便、操作系统平台通用等,非常适合在网络上传播和使用。如今在...
  • Eiceblue
  • Eiceblue
  • 2015年11月17日 14:48
  • 5890

c#使用PDFBox-0.7DLL文件转换pd成txt 命令行DOS方式 源码例子

  • 2013年06月22日 04:17
  • 10.62MB
  • 下载

C# 文件转换base64

  • 2011年08月23日 16:32
  • 43KB
  • 下载

c# asp.net 与 excel文件转换

  • 2012年05月18日 18:54
  • 645KB
  • 下载

CSV文件转换charp c#

  • 2014年04月19日 13:28
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#下载文件和将文件转换为数据流下载的示例
举报原因:
原因补充:

(最多只允许输入30个字)