在学习一个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. 简单工厂(Simple Pattern)模式

    一.简单工厂(Simple Factory)模式 Simple Factory 模式根据提供给它的数据,返回几个可能类中的一个类的实例.通常它返回的类都有一个公共的父类和公共的方法. Simple F ...

  2. Ubuntu系统下允许Apache的mod_rewrite功能

    首先,使能apache的rewirte模块,在shell里输入下边的命令: sudo a2enmod rewrite 然后重启一下webserver使更改生效 sudo service apache2 ...

  3. 自定义视图(继承View)

    前言 Android提供了丰富的控件,但是有时候还是不能满足自己的需求,这时候就需要自定义视图了,自定义视图分为几种,一种为继承为View的,一种为继承于ViewGroup的.继承于View的需要我们 ...

  4. mongodb 入门笔记

    选择Mongo的关键是:这是一个 JSON 文档数据库. 1. Mongo 的术语 文档:一条完整的数据就是一个文档(对应于 MySQL 的一行). 集合:一组文档构成一个集合.类似 MySQL 中表 ...

  5. linux前景到底怎么样啊?

    我就不长篇大论,举四个例子你看看. 1.目下最热最潮最流行的云计算技术的背后是虚拟化和网格技术,而虚拟化和网格技术基本是Linux的天下,目前虚拟化的三大家:Vmware,Xen,Hyper-V中,市 ...

  6. Python脚本控制的WebDriver 常用操作 <十九> 获取测试对象的状态

    下面将使用webdriver来模拟测试中观察测试对象的状态的操作 测试用例场景 在web自动化测试中,我们需要获取测试对象的四种状态 是否显示.使用element.is_displayed()方法: ...

  7. Word 使用技巧

    文档的写作,例来分为latex与word两大阵营.一个是论文界的宠儿,一个是平民的所见即所得.看起来好像前者更加牛一些. 本来我也是觉得latex比word好.但是使用latex时苦于找不到一个好的编 ...

  8. Eclipse 常用插件

    /* ===================== Eclipse Color Theme 语法高亮 ======================== */ 安装方法同上,软件安装URL http:// ...

  9. 【Go】为什么用go; Golang Erlang 前世今生

    给自己一条退路,再次比较Erlang和Golang 2014-6-28 陈叶皓 chenyehao@gmail.com 雨天的周末,适合码字的时节... 一年前我开始学习go语言的时候,如获至宝,既有 ...

  10. [转]- Winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值

    转自:http://heisetoufa.iteye.com/blog/382684 第一种方法: 用委托,Form2和Form3是同一组 Form2  using System; using Sys ...