以下驗證碼的代碼,倒數第4行,<this.Response.ContentType = "image/jpeg";>這句存在的意義是啥,我理解不了?我換成"text/html","text/plain","application/x-excel"......都看不出啥影響,把這段直接刪掉也沒影響,F5除錯都是跳出驗證碼,求大神解釋。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(80, 40);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.DrawRectangle(Pens.Black, 0, 0, 79, 39);
Color[] colors = { Color.Black, Color.Red, Color.Blue, Color.DarkGreen, Color.Purple, Color.DarkGoldenrod, Color.Chocolate };
string[] fontNames = { "宋體", "楷體_GB2321", "隸書", "Arial", "Comic Sans MS", "Microsoft Sans Serif", "Times New Roman" };
Random rand = new Random();
char[] chs = new char[] { (char)(65 + rand.Next(26)), (char)(65 + rand.Next(26)), (char)(65 + rand.Next(26)) };
Brush brush;
Font font;
int x, y;
for (int i = 0; i < 3; i++)
{
brush = new SolidBrush(colors[rand.Next(7)]);
font = new Font(fontNames[rand.Next(7)], 18, FontStyle.Bold);
x = i * 20 + 2;
y = 5 + rand.Next(5);
g.RotateTransform(rand.Next(-10, 9));
g.DrawString(chs[i].ToString(), font, brush, x, y);
}
Pen[] pens = { Pens.Gray, Pens.LightGray };
for (int i = 0; i < 200; i++)
{
x = rand.Next(bmp.Width - 1);
y = rand.Next(bmp.Height - 1);
g.DrawEllipse(pens[i % 2], x, y, 1, 1);
}
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Jpeg);
this.Response.Clear();
this.Response.ContentType = "image/jpeg"; //這段代碼的作用?我用F5除錯的時候看不出來,有它沒它好像都沒區別啊?
this.Response.BinaryWrite(ms.ToArray());
g.Dispose();
bmp.Dispose();
}
}
uj5u.com熱心網友回復:
這個不是很清楚,但是以前看視頻中提到了這么一點。ContentType指的是回傳的資料內容的型別。這里你就算不寫,客戶端也是可以識別出來你給過來的東西。你寫成"text/html","text/plain","application/x-excel"這些東西,只是你做了一個欺騙客戶端的動作。就好比你給別人轉賬100塊錢,你在備注里告訴別人我給你轉了一萬。但是當別人收到的時候,還是會知道只是100。具體也搞不太清楚。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/130327.html
標籤:ASP.NET
上一篇:c#中lambda運算式動態欄位
