.NET中如何循环遍历一个文件夹中的图片并将图片以二进制的方式存入sqlserver数据库

我有一个文件夹,里面有N张图片,我需要把这个文件夹里的所有图片以二进制的方式存到数据库里,数据库里有两列,ID和img,一个ID对应一个解析过后的二进制,求详细代码,最好... 我有一个文件夹,里面有N张图片,我需要把这个文件夹里的所有图片以二进制的方式存到数据库里,数据库里有两列,ID和img,一个ID对应一个解析过后的二进制,求详细代码,最好前台和后台都有,asp.net的,谢谢我有一个文件夹,里面有N张图片,我需要把这个文件夹里的所有图片以二进制的方式存到数据库里,数据库里有两列,ID和img还有name,一个ID对应一个解析过后的二进制,name是图片的名字,,img字段存的是二进制,求详细代码,最好前台和后台都有,asp.net的,谢谢 展开
 我来答
别抢我远古妖王
2015-05-09 · 超过19用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:15.3万
展开全部

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;


namespace upload

{

    public partial class Form1 : Form

    {

        string[] st;        

        public Form1()

        {

            InitializeComponent();

        }


        private void button1_Click(object sender, EventArgs e)

        {

            //打开文件夹路径,并显示所有文件

            if (string.IsNullOrEmpty(textBox1.Text))

            {

                this.errorProvider1.SetError(this.textBox1, "必须输入文件夹地址");

                return;

            }

            st=Directory.GetFiles(textBox1.Text);

            string[] st1 = new string[st.Length];

            int i = 0;

            foreach (var item in st)

            {

                st1[i++] = Path.GetFileName(item);

            }

            listBox1.DataSource = st1;

            

        }


        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

        {


        }


        private void textBox1_TextChanged(object sender, EventArgs e)

        {


        }


        private void button2_Click(object sender, EventArgs e)

        {

            //将符合后缀的文件保存到数据库

            if (string.IsNullOrEmpty(textBox2.Text))

            {

                this.errorProvider1.SetError(this.textBox2, "必须输入后缀");

                return;

            }

            foreach (var item in st)

            {

                string st3=Path.GetExtension(item);

                if (textBox2.Text.Contains(st3.Substring(1)))

                {

                    byte[] bt=new byte[File.OpenRead(item).Length];

                    File.OpenRead(item).Read(bt,0,bt.Length);

                    //连接数据库字符串

                    using (SqlConnection conn = new SqlConnection("Data Source=" + textBox3.Text + ";Initial Catalog=" + textBox4.Text + ";User Id=" + textBox5.Text + ";Password=" + textBox6.Text)) {


                        //sql命令 小程序 不值当的写3层了 直接上字符串

                        string sql = "insert into " + textBox7.Text + " (name,img) values (@Name,@Img)";


                        SqlCommand cmd = new SqlCommand(sql, conn);

                        cmd.Parameters.AddRange(new SqlParameter[]{

                        new SqlParameter("@Name",Path.GetFileNameWithoutExtension(item)),

                        new SqlParameter("@Img",bt)

                    });

                        cmd.ExecuteNonQuery();

                    }

                    

                }

            }

        }


        private void button3_Click(object sender, EventArgs e)

        {

            //获得数据库中保存的信息

            using (SqlConnection conn = new SqlConnection("Data Source=" + textBox3.Text + ";Initial Catalog=" + textBox4.Text + ";User Id=" + textBox5.Text + ";Password=" + textBox6.Text)) {

                DataTable st = new DataTable();

                string sql = "select id,name from " + textBox7.Text;

                SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);

                adapter.Fill(st);

                dataGridView2.DataSource = st;

            }

            

        }


        private void Form1_Load(object sender, EventArgs e)

        {


}


        private void button4_Click(object sender, EventArgs e)

        {

            //选中列表中的一条数据,从数据库中获得图片,并显示

            using (SqlConnection conn = new SqlConnection("Data Source=" + textBox3.Text + ";Initial Catalog=" + textBox4.Text + ";User Id=" + textBox5.Text + ";Password=" + textBox6.Text)) {

                string sql = "select img from " + textBox7.Text+" where id="+dataGridView2.SelectedRows[0].Cells["id"].Value;

                SqlCommand cmd=new SqlCommand(sql,conn);

                conn.Open();

                byte[] bt=cmd.ExecuteScalar() as byte[];

                MemoryStream ms = new MemoryStream();

                ms.Write(bt, 0, bt.Length);

                Image img= Image.FromStream(ms);

                int height=pictureBox1.Height;

                int width =(int)(img.Width*1.0/img.Height*height);

                Image img1=new Bitmap(width,height);

                Graphics gs = Graphics.FromImage(img1);

                gs.DrawImage(img,0,0,width,height);

                pictureBox1.Image = img1;

            }

            

        }

    }

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式