c#上传图片到SQL中,以及读取的代码

该博客提供了使用C#将图片上传到SQL数据库以及从数据库中读取图片的代码实现。在上传过程中,通过GetFile()获取文件名,ReadFile()读取文件内容,并使用SqlCommand插入到数据库的images表中。读取时,通过SqlDataReader读取数据库中的image和stype,设置Response.ContentType并输出图片数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls; using System.IO;
using System.Data.SqlClient;

public partial class tupiancaozuo : System.Web.UI.Page
{
   
private string fileName = "";
   
private static SqlConnection conn = null;

   
protected void Page_Load(object sender, EventArgs e)
    {
        ConnectDB();

    }
   
protected void Button1_Click(object sender, EventArgs e) { WriteImage(); } //得到文件名
    private string GetFile()
    {
        HttpPostedFile file
= File1.PostedFile;
        fileName
= file.FileName;

       
return fileName;
    }
   
//读取文件内容
    private byte[] ReadFile()
    {
        FileStream file
= File.OpenRead(GetFile());
       
byte[] content = new byte[file.Length];
        file.Read(content,
0, content.Length);
        file.Close();

       
return content;
    }

   
//连接数据库
    private void ConnectDB()
    {
       
string connStr = "server=(local)//SQLEXPRESS;uid=sa;pwd=123;database=zonghe;";
        conn
= new SqlConnection(connStr);
        conn.Open();
    }
   
//写入图片到数据库中
    private void WriteImage()
    {
        SqlCommand comm
= conn.CreateCommand();
        comm.CommandText
= "insert into images(image,stype) values(@image,@type)";
        comm.CommandType
= CommandType.Text;
        SqlParameter param
= comm.Parameters.Add("@image", SqlDbType.Image);
        param.Value
= ReadFile();
        param
= comm.Parameters.Add("@type", SqlDbType.NVarChar);
        param.Value
= GetContentType(new FileInfo(fileName).Extension.Remove(0, 1));

       
if (comm.ExecuteNonQuery() == 1)
            Response.Write(
"Successful");
       
else
            Response.Write(
"Fail");

        conn.Close();
    }

   
//获取图片的后缀名
    private string GetContentType(string extension)
    {
       
string type = "";

       
if (extension.Equals("jpg") || extension.Equals("JPG"))
            type
= "jpeg";
       
else
            type
= extension;

       
return "image/" + type;
    }

   
//从数据库中读取图片
    private void ReadImage()
    {
        SqlCommand comm
= conn.CreateCommand();
        comm.CommandText
= "select image,stype from images";
        comm.CommandType
= CommandType.Text;

        SqlDataReader reader
= comm.ExecuteReader();
       
while (reader.Read())
        {
            Response.ContentType
= reader["stype"].ToString();//读写类型  一定要设置否则浏览器会当作文本输出
            Response.BinaryWrite((byte[])reader["image"]);//图片数据
        }

        Response.Write(
"Successful");
        Response.End();

        conn.Close();
    }



   
protected void Button2_Click(object sender, EventArgs e)
    {
       
try
       {
        ReadImage();
       }
      
catch(Exception ep)
       {
        conn.Close();
        Response.End();
       }
     }
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天蜻蜓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值