• asp.net 几种文件下载方式比较


    /*
         * asp.net 几种文件下载方式比较
         *
         * 方法1、HttpResponse.TransmitFile
         * 方法2、HttpResponse.WriteFile
         * 方法3、HttpResponse.BinaryWrite
         * 方法4、HttpResponse.Redirect
         *
         * 方法1与方法2
         *      相同点:都是通过文件的相对或绝对路径下载文件;
         *      不同点:方法2是一次性将文件读入内存,然后输出给客户端;
         *              方法1不在内存中缓冲文件。
         *        
         *      因此,对于大文件或用户数多的下载,方法1不会对于服务器内存的占用将远远低于方法2;
         *      这正是方法1的最大优势,
         *      但方法1也有一个局限:does not work with UNC-share file paths.     *     
         *      UNC (Universal Naming Convention) / 通用命名规则,也叫通用命名规范、通用命名约定。
         *      它符合 \servername\sharename 格式
         *      也就是说方法1无法下载网络共享磁盘的文件
         *     
         *      例如:
         *      if (filePath.StartsWith(@"\\")) 
         *          context.Response.WriteFile(filePath, false);
         *      else 
         *          context.Response.TransmitFile(filePath);
         *     
         * 方法3
         *      方法3主要是将已有的btye[] 型对象输出到客户端;
         *      如果要下载的文件位于数据库等存储介质,那么,读入内存时一般可放于DataTable等对象中,
         *      这时就可以直接HttpResponse.BinaryWrite((byte[])dt.Rows[0]["fileContent"])输出
         *
         * 方法4
         *      方法4主要是通过文件的相对路径下载文件;     *
         *
         *
         * 以上四个方法,如果下载一个汉字命名且字数超过20个字的文件
         * 方法1不会有问题;
         * 使用其它三个方法下载后,如果客户端在提示框中点“打开”将报错,提示文件名过长。
         *      
         */ 以下是测试用到的 download.aspx 及 download.cs的代码:

    download.aspx

    Code

      

    download.cs 

    Code
  • 相关阅读:
    webpack 打包报 ERROR in static/js/vendor.2eff2b5a1d36f4b7f033.js from UglifyJs
    常见重构技巧
    Java常见重构技巧
    Python写基于非线性优化的2D-SLAM系统(已开源)
    分享一个免费开源压缩视频软件!!!【视频压缩后质量还可以】
    AJAX之超时与网络异常处理
    HTTP
    Gin多次读取body
    高效的数据压缩编码方式 Protobuf
    TCP报文之-tcp dup ack 、tcp Out-of-Order
  • 原文地址:https://www.cnblogs.com/aspsmile/p/1495557.html
Copyright © 2020-2023  润新知