当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪.Net下二进制形式的文件(图片)的存储与读取详细解析       .Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: .........
    ▪DataSet.Tables[].Rows[][]的用法详细解析       DataSet.Tables[0].Rows[0][1]表示DataSet中第一张表(因为Tables[0]就是第一张表的意思)中第一行(Rows[0][]) 第二列(Rows[][1])的数据。 DataSet.Tables["tableName"]是指定获取特定的表名。如果DataSet只有一张表.........
    ▪如何在asp.net中使用FreeTextBox控件       步骤一:解压FreeTextBox-3.1.6只要将FreeTextBox.dll、ftb.imagegallery.aspx和aspnet_client文件夹拷贝到项目文件夹中,和我们的test.aspx在相同的目录下中,其中FreeTextBox.dll放到bin文件夹下并且在VS2008中添.........

[1].Net下二进制形式的文件(图片)的存储与读取详细解析
    来源: 互联网  发布时间: 2013-11-30

.Net下图片的常见存储与读取凡是有以下几种:
存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].

1.参数是图片路径:返回Byte[]类型:

代码如下:

public byte[] GetPictureData(string imagepath)
        {
            ////根据图片文件的路径使用文件流打开,并保存为byte[]  
            FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法
            byte[] byData = new byte[fs.Length];
            fs.Read(byData, 0, byData.Length);
            fs.Close();
            return byData;
        }

2.参数类型是Image对象,返回Byte[]类型:
代码如下:

public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
        {
            //将Image转换成流数据,并保存为byte[]  
            MemoryStream mstream = new MemoryStream();
            imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] byData = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(byData, 0, byData.Length);
            mstream.Close();
            return byData;
        }

好了,这样通过上面的方法就可以把图片转换成Byte[]对象,然后就把这个对象保存到数据库中去就实现了把图片的二进制格式保存到数据库中去了。下面我就谈谈如何把数据库中的图片读取出来,实际上这是一个相反的过程。

读取图片:把相应的字段转换成Byte[]即:Byte[] bt=(Byte[])XXXX

1.参数是Byte[]类型,返回值是Image对象:

代码如下:

public System.Drawing.Image ReturnPhoto(byte[] streamByte)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            return img;
        }

2.参数是Byte[] 类型,没有返回值,这是针对asp.net中把图片从输出到网页上(Response.BinaryWrite)
代码如下:

public void WritePhoto(byte[] streamByte)
        {
            // Response.ContentType 的默认值为默认值为“text/html”
            Response.ContentType = "image/GIF";
            //图片输出的类型有: image/GIF  image/JPEG
            Response.BinaryWrite(streamByte);
        }

补充:
针对Response.ContentType的值,除了针对图片的类型外,还有其他的类型:
代码如下:

Response.ContentType = "application/msword";
Response.ContentType = "application/x-shockwave-flash";
Response.ContentType = "application/vnd.ms-excel";

另外可以针对不同的格式,用不同的输出类型以适合不同的类型:
代码如下:

switch (dataread("document_type"))
            {
                case "doc":
                    Response.ContentType = "application/msword";
                case "swf":
                    Response.ContentType = "application/x-shockwave-flash";
                case "xls":
                    Response.ContentType = "application/vnd.ms-excel";
                case "gif":
                    Response.ContentType = "image/gif";
                case "Jpg":
                    Response.ContentType = "image/jpeg";
            }

一些相关的东西,可以作为参考
代码如下:

Image image= GetImageFromClipboard();//实现从剪切板获取图像的功能
System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter
= new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); formatter.Serialize(stream, image);

FileStream fs=new FileStream("xx",FileMode.Open,FileAccess.Write);
fs.Write(stream.ToArray(),0,stream.ToArray().Length);


    
[2]DataSet.Tables[].Rows[][]的用法详细解析
    来源: 互联网  发布时间: 2013-11-30

DataSet.Tables[0].Rows[0][1]表示DataSet中第一张表(因为Tables[0]就是第一张表的意思)中第一行(Rows[0][])

第二列(Rows[][1])的数据。

DataSet.Tables["tableName"]是指定获取特定的表名。如果DataSet只有一张表,则为DataSet.Tables[0].


    
[3]如何在asp.net中使用FreeTextBox控件
    来源: 互联网  发布时间: 2013-11-30

步骤一:解压FreeTextBox-3.1.6只要将FreeTextBox.dll、ftb.imagegallery.aspx和aspnet_client文件夹拷贝到项目文件夹中,和我们的test.aspx在相同的目录下中,其中FreeTextBox.dll放到bin文件夹下并且在VS2008中添加引用(其实FreeTextBox.dll不需要拷贝进项目文件夹,只需要"解决方案->右键->添加引用"后bin文件夹中会自动产生FreeTextBox.dll)。

步骤二:将FreeTextBox做成空间添加到工具箱中,这在前一篇文章中写过,点击进入查看。

步骤三:往aspx文件中添加控件FreeTestBox,并修改其属性。修改后的控件属性如下:

代码如下:

    <FTB:FreeTextBox ID="Free1" 
          ImageGalleryPath="~/Images"  
          Language="zh-CN" runat="server"    
          ButtonDownImage="True"            
          toolbarlayout="ParagraphMenu,FontFacesMenu,FontSizesMenu,
               FontForeColorsMenu,FontForeColorPicker,FontBackColorsMenu,
               FontBackColorPicker|Bold,Italic, Underline,Strikethrough,Superscript,
               Subscript,RemoveFormat|JustifyLeft,JustifyRight,
               JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;CreateLink,Unlink,     
               InsertImage|Cut,Copy,Paste,Delete;Undo,Redo,Print,Save|SymbolsMenu,StylesMenu,       
               InsertHtmlMenu|InsertRule,InsertDate,InsertTime|InsertTable,EditTable;InsertTableRowAfter,   
               InsertTableRowBefore,DeleteTableRow;InsertTableColumnAfter,InsertTableColumnBefore,
               DeleteTableColumn|InsertForm,InsertTextBox,InsertTextArea,InsertRadioButton,
               InsertCheckBox,InsertDropDownList,InsertButton|InsertDiv,EditStyle,InsertImageFromGallery,
               Preview,SelectAll,WordClean,NetSpell" >    
     </FTB:FreeTextBox>

步骤四:在 ftb.imageegallery.aspx 中设置属性
代码如下:

 <FTB:ImageGallery id="ImageGallery1"   SupportFolder="~/aspnet_client/FreeTextBox/"
   AllowImageDelete="true" AllowImageUpload="true"
   AllowDirectoryCreate="true"  AllowDirectoryDelete="true" runat="Server" />

这些属性表示允许删除图片和上传图片,允许创建文件夹和删除文件夹 。

注意:
完成以上这些,我们在test.aspx的设计视图下,还是无法看到那些文本编辑器按钮,只能看到的是“FreeTextBox:Free1”这么一个空白界面,原本我以为没有操作成功,所以上面的步骤重复了好多次,但依旧是这样,后来在浏览器下打开发现原来操作已经成功了,前面做了很多无用功。呵呵。

实例
在aspx文件中再添加一个TestBox做文章的“标题”,一个按钮Button“提交”。
test.aspx.cs:

代码如下:

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        string title = this.TextBox1.Text;
        string content = this.Free1.Text;
        NewsBus.AddNews(title,content);
        //Response.Redirect("");
        content = NewsBus.getLateNews().Tables[0].Rows[0][2].ToString();
        Response.Write(content);//输出最新插入的那条新闻的内容
    }

appcode中NewsBus.cs:
代码如下:

  public static bool AddNews(string title ,string content)
    {
        String strsql = "Insert into test(title,content) Values(@title,@content)";
        SqlParameter[] paras = new SqlParameter[2];
        paras[0] = new SqlParameter("@title", SqlDbType.VarChar);
        paras[0].Value =title;

        paras[1] = new SqlParameter("@content", SqlDbType.VarChar);
        paras[1].Value =content;

        if (NewsDB.Getcmd(strsql, paras))
        {
            return true;
        }
        return false;
    }
    public static DataSet getLateNews()
    {
        string strsql = "select top 1 * from test order by id desc";
        return NewsDB.Getds(strsql);
    }


appcode中NewsDB.cs:
代码如下:

    public static SqlConnection CreatCon()
    {
        string str=ConfigurationManager.AppSettings["conn"];
        return new SqlConnection(str);
    }
  public static DataSet Getds(String strsql)
    {
        SqlConnection con=NewsDB.CreatCon();
        DataSet ds= null;
        try
        {
            SqlDataAdapter da = new SqlDataAdapter(strsql, con);
            ds = new DataSet();
            da.Fill(ds);
      }
        catch (Exception er)
        {
            throw er;
        }
        return ds;
    }

web.config
代码如下:

<configuration>
<appSettings>
     <add key="conn" value="Data Source=XUWEI/SQLEXPRESS;Initial Catalog=TestDatabase;User ID=dnndemo;Password=dnndemo" />
  </appSettings>
</configuration>

最后在标题和内容栏中输入文字,并且添加图片,点击“提交”以后会显示刚输入的内容。其中就包括图片。

其实原理很简单,FreeTextBox在我们将内容栏中的文本输入到数据库的指定字段以后,会判断我们有没有插入图片,

如果有图片则将图片的地址也写入“内容”字段中。

比如我们在FreetextBox的文本框中输入文本:“内容栏,插入图片”,然后再插入一个叫做"pic.jpg","提交"完成以后我们去数据库的表test中看字段content的内容如下:

代码如下:

<P>内容栏,插入图片</P>
<P><IMG height=366 alt=未命名.jpg src="/testFTB3/Images/pic.jpg" mce_src="/blog_article/testFTB3/Images/pic.jpg" width=950 border=0></P>

而在Images目录下我们也能找到刚才插入的图片"pic.jpg"。这个是由
代码如下:

<FTB:FreeTextBox ID="Free1" 
          ImageGalleryPath="~/Images"   ...
</FTB:FreeTextBox>

    
最新技术文章:
▪C#通过IComparable实现ListT.sort()排序
▪C#实现对Json字符串处理实例
▪Winform实现抓取web页面内容的方法
▪Winform实现将网页生成图片的方法
▪C#控制台程序中处理2个关闭事件的代码实例
▪WinForm实现同时让两个窗体有激活效果的特效...
▪WinForm实现拦截窗体上各个部位的点击特效实...
▪用C#的params关键字实现方法形参个数可变示例
▪C#判断某程序是否运行的方法
▪C#验证码识别基础方法实例分析
▪C#通过WIN32 API实现嵌入程序窗体
▪C#实现获取鼠标句柄的方法
▪C#事件处理和委托event delegate实例简述
▪C#获取程序文件相关信息的方法
▪C#中的除法运算符与VB.NET中的除法运算符
▪ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedLi...
▪Base64编码解码原理及C#编程实例
▪C#实现的优酷真实视频地址解析功能(2014新算...
▪C#和SQL实现的字符串相似度计算代码分享
▪C#使用Word中的内置对话框实例
▪C#反射之基础应用实例总结
▪C#生成单页静态页简单实例
▪C#实现SMTP邮件发送程序实例
▪C#实现随鼠标移动窗体实例
▪C#使用GDI+创建缩略图实例
▪C#实现通过模板自动创建Word文档的方法
▪C#中Response.Write常见问题汇总
▪C#中多态、重载、重写区别分析
▪WinFrom中label背景透明的实现方法
▪C#中out保留字用法实例分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3