Response.BinaryWrite()方法的问题

楼主gj0001(阿江)2003-03-18 12:37:13 在 .NET技术 / ASP.NET 提问

从数据库中读取图像列,然后调用此方法输出。  
  请问如何使图像定位在在此页面地某一位置。 问题点数:100、回复次数:4Top

1 楼webdiyer(陕北吴旗娃)回复于 2003-03-18 13:08:43 得分 30

用一个aspx页面专门发送图片,然后把该页面当图片路径使用,比如:<img   src="showpic.aspx">Top

2 楼hepp(皮皮)回复于 2003-03-18 13:10:41 得分 10

upTop

3 楼qieyj(温馨港湾)回复于 2003-03-18 13:24:42 得分 30

在ASP.NET中存取图片到数据库的示例  
  首先在SQL   Server中建立一个图片存储的数库表,ImageData   Column为图象二进制数据储存字段,ImageContentType   Column为图象文件类型记录字段,ImageDescription   Column为储蓄图象文件说明字段,ImageSize   Column为储存图象文件长度字段,结构如下:  
            CREATE   TABLE   [dbo].[ImageStore]   (  
            [ImageID]   [int]   IDENTITY   (1,   1)   NOT   NULL   ,  
            [ImageData]   [image]   NULL   ,    
            [ImageContentType]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,  
            [ImageDescription]   [varchar]   (200)   COLLATE   Chinese_PRC_CI_AS   NULL   ,  
            [ImageSize]   [int]   NULL    
            )   ON   [PRIMARY]   TEXTIMAGE_ON   [PRIMARY]  
            */    
             
            //UpLoadImage.aspx程序内容如下:  
            <%@   Page   Inherits="UploadImage.UploadImage"   SRC="UpLoadImage.cs"   Language="C#"%>  
            <HTML><title>上传图片</title>  
            <BODY   bgcolor="#FFFFFF">  
            <FORM   ENCTYPE="multipart/form-data"   RUNAT="server"   ID="Form1">  
            <TABLE   RUNAT="server"   WIDTH="700"   ALIGN="left"   ID="Table1"   cellpadding="0"   cellspacing="0"   border="0">  
            <TR>  
            <TD>上传图片(选择你要上传的图片)</TD>  
            <TD>  
            <INPUT   TYPE="file"   ID="UP_FILE"   RUNAT="server"   STYLE="Width:320"   ACCEPT="text/*"   NAME="UP_FILE">  
            </TD>  
            </TR>  
            <TR>  
            <TD>    
            文件说明(添加上传图片说明,如:作者、出处)  
            </TD>  
            <TD>  
            <asp:TextBox   RUNAT="server"   WIDTH="239"   ID="txtDescription"   MAINTAINSTATE="false"   />  
            </TD>  
            </TR>  
            <TR>  
            <TD>  
            <asp:Label   RUNAT="server"   ID="txtMessage"   FORECOLOR="red"   MAINTAINSTATE="false"   />  
            </TD>  
            <TD>  
            <asp:Button   RUNAT="server"   WIDTH="239"   ONCLICK="Button_Submit"   TEXT="Upload   Image"   />  
            </TD>  
            </TR>  
            </TABLE>  
            </FORM>  
            </BODY>  
            </HTML>  
            //-------------------------------------------------------------------  
            //UpLoadImage.cs程序内容如下:  
            using   System;  
            using   System.Web;  
            using   System.IO;  
            using   System.Data;  
            using   System.Data.SqlClient;  
            using   System.Web.UI;  
            using   System.Web.UI.WebControls;  
            using   System.Web.UI.HtmlControls;    
            namespace   UploadImage  
            {    
            public   class   UploadImage   :   Page   {    
            protected   HtmlInputFile   UP_FILE;   //HtmlControl、WebControls控件对象  
            protected   TextBox   txtDescription;  
            protected   Label   txtMessage;  
            protected   Int32   FileLength   =   0;   //记录文件长度变量    
            protected   void   Button_Submit(System.Object   sender,   System.EventArgs   e)   {  
            HttpPostedFile   UpFile   =   UP_FILE.PostedFile;   //HttpPostedFile对象,用于读取图象文件属性  
            FileLength   =   UpFile.ContentLength;   //记录文件长度    
            try   {  
            if   (FileLength   ==   0)   {   //文件长度为零时  
            txtMessage.Text   =   "<b>请你选择你要上传的文件</b>";    
            }   else   {  
            Byte[]   FileByteArray   =   new   Byte[FileLength];   //图象文件临时储存Byte数组  
            Stream   StreamObject   =   UpFile.InputStream;   //建立数据流对像  
            //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度  
            StreamObject.Read(FileByteArray,0,FileLength);    
            //建立SQL   Server链接  
            SqlConnection   Con   =   new   SqlConnection("Data   Source=Localhost;Initial   Catalog=testdb;User   ID=sa;Pwd=;");  
            String   SqlCmd   =   "INSERT   INTO   ImageStore   (ImageData,   ImageContentType,   ImageDescription,   ImageSize)   VALUES   (@Image,   @ContentType,   @ImageDescription,   @ImageSize)";  
            SqlCommand   CmdObj   =   new   SqlCommand(SqlCmd,   Con);  
            CmdObj.Parameters.Add("@Image",SqlDbType.Binary,   FileLength).Value   =   FileByteArray;  
            CmdObj.Parameters.Add("@ContentType",   SqlDbType.VarChar,50).Value   =   UpFile.ContentType;   //记录文件类型  
            //把其它单表数据记录上传  
            CmdObj.Parameters.Add("@ImageDescription",   SqlDbType.VarChar,200).Value   =   txtDescription.Text;  
            //记录文件长度,读取时使用  
            CmdObj.Parameters.Add("@ImageSize",   SqlDbType.BigInt,8).Value   =   UpFile.ContentLength;  
            Con.Open();  
            CmdObj.ExecuteNonQuery();    
            Con.Close();  
            txtMessage.Text   =   "<p><b>OK!你已经成功上传你的图片</b>";//提示上传成功  
            }  
            }   catch   (Exception   ex)   {  
            txtMessage.Text   =   ex.Message.ToString();  
            }}}}  
            //----------------------------------------------------------------------  
            //好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在Web页中啦,请看以下程序:  
            //ReadImage.aspx程序内容如下:  
            /-----------------------------------------------------------------------    
            <%@   Page   Inherits="ReadImage.MainDisplay"   SRC="ReadImage.cs"%>    
            //----------------------------------------------------------------------  
            //ReadImage.cs程序内容如下:  
            using   System;  
            using   System.Data;  
            using   System.Data.SqlClient;  
            using   System.Web.UI;  
            using   System.Web.UI.WebControls;  
            using   System.Web.UI.HtmlControls;  
            namespace   ReadImage   {  
            public   class   MainDisplay   :   System.Web.UI.Page   {  
            public   void   Page_Load(System.Object   sender,   System.EventArgs   e)   {  
            int   ImgID   =   Convert.ToInt32(Request.QueryString["ImgID"]);   //ImgID为图片ID    
            //建立数据库链接  
            SqlConnection   Con   =   new   SqlConnection("Data   Source=KING;Initial   Catalog=testdb;User   ID=sa;Pwd=;");  
            String   SqlCmd   =   "SELECT   *   FROM   ImageStore   WHERE   ImageID   =   @ImageID";  
            SqlCommand   CmdObj   =   new   SqlCommand(SqlCmd,   Con);  
            CmdObj.Parameters.Add("@ImageID",   SqlDbType.Int).Value   =   ImgID;  
            Con.Open();  
            SqlDataReader   SqlReader   =   CmdObj.ExecuteReader();  
            SqlReader.Read();    
            Response.ContentType   =   (string)SqlReader["ImageContentType"];//设定输出文件类型  
            //输出图象文件二进制数制  
            Response.OutputStream.Write((byte[])SqlReader["ImageData"],   0,   (int)SqlReader["ImageSize"]);    
            Response.End();  
            Con.Close();  
            //很简单吧^_^  
            }  
            }  
            }  
            //--------------------------------------------------------------------  
            //最后,我们当然要把它在Web页面显示出来啦  
            //ShowImage.hml  
            <html>  
            <body>  
            这个是从数据库读取出来的图象:<img   src="ReadImage.aspx?ImgID=1">  
            <body>  
            </html>Top

4 楼gOODiDEA(无语)回复于 2003-03-18 14:36:26 得分 30

例如a.aspx调用了Response.BinaryWrite()  
   
  你可以在另外一页<img   src="a.aspx">  
  Top

你可能对以下的问题也比较感兴趣....