在学习一个CS文件,如下:
public partial class GetPic : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string picid = Request.QueryString["id"];
        string pictureFilename = Path.Combine(Server.MapPath("/productpictures"), picid + ".jpg");
        Response.Clear();
        Response.ClearHeaders();
        Response.AppendHeader("content-type", "image/jpeg");
        Response.WriteFile(pictureFilename);
        Response.Flush();
        Response.End();
    }
}
这是一个输出图片文件的程序,请问向网页上输出内容的时候是必须都得先Response.Clear();和Response.ClearHeaders();吗?如果不用这两个清除能怎样呢?

解答:

并非必须的 ,倘若你在调用
Response.WriteFile(pictureFilename);
之前还向缓冲区中写入过数据例如调用过:Response.Write("abc"); 并且你还希望浏览器能够将这个图片正常的显示,这时你就需要Response.Clear();了
如果不Response.Clear();那么图片将可能无法正常的显示为什么呢?
原因是这样的,首先你想要告诉客户端这个响应内容的类型为image/jpeg
你是通过Response.AppendHeader("content-type", "image/jpeg"); 申明的。
然后能当客户端得到这个响应数据时也将会将这些数据按照image/jpeg
来解释,但是由于你前面掉用了Response.Write("abc"); 因此客户端实际上得到的内容为 <字符:abc>+<图片的数据> 这样客户端得到的数据实际上不仅仅是图片的数据但是由于你声明的“content-type”强调了这些数据应该按照image/jpeg来解释 最终导致的结果就是图片不能正常的解码 所以在Response.WriteFile(pictureFilename);
之前先调用Response.Clear();较为保险

C#的cs文件中Response.Clear();Response.ClearHeaders()的作用的更多相关文章

  1. 2014-08-22 关于Response、Request等对象在cs文件中的使用

    今天是在吾索实习的第33天.已经有一段时间没写过博客了,今天突然想起个值得分享的东西,所以又华丽地回归了. 废话不多说了,直奔主题.我们会发现,在我们在cs文件中,直接使用Response.Reque ...

  2. HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值

    在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...

  3. 将目录下面所有的 .cs 文件合并到一个 code.cs 文件中,写著作权复制代码时的必备良药

    将目录下面所有的 .cs 文件合并到一个 code.cs 文件中,写著作权复制代码时的必备良药 @echo off echo 将该目录下所有.cs文件的内容合并到一个 code.cs 文件中! pau ...

  4. 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  5. 头文件中的#ifndef/#define/#endif 的作用

    在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误.在头文件中实用#ifndef #define #endif能避免头文件的重定 ...

  6. ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别

    Response.Write 与   Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...

  7. ASP.NET CS文件中输出JavaScript脚本

    ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscrip ...

  8. 【Maven】在pom.xml文件中使用resources插件的小作用

    在spring boot创建web项目打包为jar包的过程中,是不会把webapp目录下的页面也打包进去的,这个时候接触到了maven的 resources插件. ================== ...

  9. CSS文件中第一行@charset "utf-8";的作用

    使用UTF-8编码唯一的好处是,国外的用户如果使用Windows XP英文版,浏览UTF-8编码的任何网页,无论是中文.还是日文.韩文.阿拉伯文,都可以正常显示,UTF-8是世界通用的语言编码,而如果 ...

随机推荐

  1. C++ 重载new和delete操作符

    原因: C++标准库提供的new和delete操作符,是一个通用实现,未针对具体对象做具体分析 存在分配器速度慢.小型对象空间浪费严重等问题,不适用于对效率和内存有限制的应用场景   好处: 灵活的内 ...

  2. Windows Phone 7 中拷贝文件到独立存储

    private void CopyToIsolatedStorage(){    using (IsolatedStorageFile storage = IsolatedStorageFile.Ge ...

  3. 13.mariadb-rhce考试解题思路

    1.安装mariadb ①yum install -y mariadb mariadb-server 或者 yum groupinstall -y mariadb 2.备份和还原数据库 ①备份:mys ...

  4. 《iptables详解 》RHEL6

          iptables详解    Iptables原理 现在防火墙主要分以下三种类型:包过滤.应用代理.状态检测 包过滤防火墙:现在静态包过滤防火墙市面上已经看不到了,取而代之的是动态包过滤技术 ...

  5. Eclispe使用Maven添加官方库的jar包

    先到百度或google搜索maven仓库,在仓库中搜索需要的jar包,如poi.jar. 搜索到之后找到需要的jar包,找到这里

  6. 可以支持jQuery1.10.1 的 fancybox 1.3.4, 並現在type為Ajax時,也可以定義窗口的大小。

    官網上的 fancybox 1.3.4 太老了,不支持jQuery1.10.1,改動了一下源碼,現在可以支持了. type為Ajax時,也可以定義窗口的大小. $("#ajaxlink&qu ...

  7. jQuery EasyUI 数据网格 - 启用行内编辑(转自http://www.runoob.com/jeasyui/jeasyui-datagrid-datagrid12.html)

    可编辑的功能是最近添加到数据网格(datagrid)的.它可以使用户添加一个新行到数据网格(datagrid).用户也可以更新一个或多个行.本教程向您展示如何创建一个数据网格(datagrid)和内联 ...

  8. IP进制站群原理

    百度搜索:“inurl:0×00”,会发现全是以八进制.十六进制形式显示的域名(如下图),当点击后,浏览器会自动将这些域名转换为十进制的ip.这种方式在黑帽圈目前挺火爆的,用于做长尾词排名,可以带来可 ...

  9. 【Qt】QSettings介绍【转】

    简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中. ...

  10. Nginx+Keepalived实现高可用站点

    Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat. corosync.pacemaker.但是它一般不会单独出现,而是与 ...