存储图像(二进制格式)从数据库到FileSystem

时间:2017-07-23 13:30:00

标签: c# sql-server ado.net

家伙! 我有一项任务是从Northwind数据库中检索所有图像(它们以二进制格式给出),它位于Categories表中并将它们作为JPG格式存储在文件系统中。我真的很陌生,需要一些帮助。我想出了这个,但它根本不起作用。

private static void WriteBinaryData(string fileName, byte[] fileContents)
    {
        FileStream stream = File.OpenWrite(fileName);

        using (stream)
        {
            stream.Write(fileContents, 0, fileContents.Length);
        }
    }


    static void Main(string[] args)
    {

        SqlConnection conn = new SqlConnection("Server = HOME-PC\\KRISKO; " +
        "Database=Northwind; Integrated Security=true");
        conn.Open();

        using (conn)
        {
            SqlCommand cmd = new SqlCommand("SELECT Picture FROM Categories", conn);
            SqlDataReader reader = cmd.ExecuteReader();

            using (reader)
            {
                while (reader.Read())
                {
                    byte[] image = (byte[])reader["Picture"];
                    WriteBinaryData("C:\\Users\\Niki\\Desktop", image);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我在下面看到了几个问题

  1. 您的文件路径C:\\Users\\Niki\\Desktop可能是一个问题,因为如果这是其他用户帐户个人资料,您可能无权访问该文件;不是你的。

  2. 您没有为图片文件提供文件名,因为此代码FileStream stream = File.OpenWrite(fileName);此处fileName变量只包含路径且没有与之关联的文件名