62,041
社区成员
发帖
与我相关
我的任务
分享
SqlDataReader reader = sqlcom.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
Response.BinaryWrite((byte[])reader["aaa"]);
}
<img src="checkcode.aspx"/>
checkcode.aspx,aspx页面直接输出2进制流
HTML code<%@ Page Language="C#"%>
<%@ Import NameSpace=" System.Drawing"%>
<%@ Import NameSpace=" System.Drawing.Imaging"%>
<%@ Import NameSpace=" System.IO"%>
<script language="C#" runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
this.ValidateCode(RndNum(4));
}
private void ValidateCode(string VNum)
{
Bitmap Img=null;
Graphics g=null;
MemoryStream ms=null;
int gheight=VNum.Length*9-10;//定义图像的大小
Img=new Bitmap(gheight,18);//生成图像的实例
g=Graphics.FromImage(Img);//从Img对象生成新的Graphics对象
SolidBrush bcsb = new SolidBrush(Color.FromArgb(112,163,44));
g.FillRegion(bcsb,new Region(new Rectangle(0,0,gheight,20)));
Font f = new Font("黑体", 11);//生成Font类的实例
SolidBrush s=new SolidBrush(Color.White);//生成笔刷类的实例
g.DrawString(VNum,f,s,0,3);//将VNum写入图片中
ms=new MemoryStream();//生成内存流对象
Img.Save(ms,ImageFormat.Jpeg);//将此图像以JPG图像文件的格式保存到流中
Response.ClearContent();//更改http ContentType
Response.ContentType="image/Jpeg";//设置响应头
Response.BinaryWrite(ms.ToArray());//将整个二进制流的内容输出到客户端
//回收资源
g.Dispose();
Img.Dispose();
Response.End();
}
private string RndNum(int VcodeNum)
{
string Vchar="A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
string[] VcArray=Vchar.Split(new Char [] {','});//拆分成数组
string VNum="";
string SpaceVNum="";
Random rand=new Random();
for(int i=1;i<VcodeNum+1;i++)
{
int t=rand.Next(25);
VNum+=VcArray[t];
SpaceVNum+=" "+VcArray[t];
}
Response.Cookies.Add(new HttpCookie("checkcode", VNum));
SpaceVNum=SpaceVNum.Trim();
return SpaceVNum;
}
</script>