• 如何将数据库二进制图片保存到硬盘上


    1.建立一个aspx页面,copy    html代码
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
          <title>Untitled Page</title>
    </head>
    <body>
          <form id="form1" runat="server">
          <div>
              &nbsp;<asp:FileUpload ID="FileUpload1" runat="server" />&nbsp;<asp:TextBox ID="txtUserName"
                  runat="server"></asp:TextBox>
              <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="保存" />
              <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="将数据库二进制图片存到磁盘" Width="207px" /></div>
          </form>
    </body>
    </html>

    2.cs代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    using System.IO;
    public partial class Default3 : System.Web.UI.Page
    {
          protected void Page_Load(object sender, EventArgs e)
          {

          }
          protected void Button2_Click(object sender, EventArgs e)
          {
              //把图片保存成数据库二进制形式
              Stream ImageStream;
              string Path = FileUpload1.PostedFile.FileName;// 文件名称
              int Size = FileUpload1.PostedFile.ContentLength; // 文件大小
              string Type = FileUpload1.PostedFile.ContentType; // 文件类型
              ImageStream = FileUpload1.PostedFile.InputStream;
              byte[] Content = new byte[Size];
              int Status = ImageStream.Read(Content, 0, Size);

              SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
              SqlCommand comm = new SqlCommand("insert into testimage (UserName,Image,Path,Type) values(@UserName,@Image,@Path,@Type)", conn);

              comm.CommandType = CommandType.Text;
              comm.Parameters.Add("@UserName", SqlDbType.VarChar, 255).Value = txtUserName.Text;
              comm.Parameters.Add("@Image", SqlDbType.Image).Value = Content;
              comm.Parameters.Add("@Path", SqlDbType.VarChar, 255).Value = Path;
              comm.Parameters.Add("@Type", SqlDbType.VarChar, 255).Value = Type;

              conn.Open();
              comm.ExecuteNonQuery();
              conn.Close();
          }
          protected void Button1_Click(object sender, EventArgs e)
          {
              //把数据库二进制图片转存到硬盘中
              string connStr = ConfigurationSettings.AppSettings["ConnectionString"];
              SqlConnection conn = new SqlConnection(connStr);
              string sql = "select * from testimage";
              SqlCommand cmd = new SqlCommand(sql, conn);
              conn.Open();
              SqlDataReader dr = cmd.ExecuteReader();
              while (dr.Read())
              {
                  byte[] bytes = (byte[])dr["Image"];
                  FileStream fs = new FileStream(@"c:\" + dr["UserID"] + ".jpg", FileMode.Create, FileAccess.Write);
                  fs.Write(bytes, 0, bytes.Length);
                  fs.Flush();
                  fs.Close();
              }
              dr.Close();
              conn.Close();
          }
    }

    3.数据库脚本
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TestImage]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[TestImage]
    GO

    CREATE TABLE [dbo].[TestImage] (
          [UserID] [int] IDENTITY (1, 1) NOT NULL ,
          [UserName] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
          [Image] [image] NULL ,
          [Path] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
          [Type] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO

  • 相关阅读:
    BigDecimal工具类处理精度计算
    Redis的简单使用和介绍
    数据库优化知识总结
    js弹出QQ对话框在线交谈
    火焰灯menu修改之后,可以实现数遍点击小方块停留在当前页面
    js作用域的一个小例子
    js中this的四种调用模式
    jquery火焰等效果导航菜单
    appserver配置虚拟主机
    一个类似百度文库选中弹出个小框的效果
  • 原文地址:https://www.cnblogs.com/qfb620/p/1741508.html
Copyright © 2020-2023  润新知