gpt4 book ai didi

c# - 如何使用 C# 从 SQL Server 获取图像数据、写入文件、将文件保存到磁盘

转载 作者:行者123 更新时间:2023-11-30 12:27:31 27 4
gpt4 key购买 nike

我正在尝试从 SQL Server 数据库中获取以图像数据类型存储的附件(图像、word 文档等)。附件可以是任何文件类型,但我只是想获取一个 .jpg 以成功下载。

我能够将文件保存到我的本地驱动器,但它似乎在这个过程中损坏了文件。

我正在尝试做的事情:

  1. 从 SQL Server 数据库中检索图像类型的二进制数据。
  2. 从二进制数据创建一个文件。
  3. 将文件保存到本地目录。

我的代码:

    public void ProcessRequest()
{
//Get the ticket number from query string
_ticketNumber = context.Request.QueryString["ID"];

SqlConnection conn = new SqlConnection(_DBConn);
SqlCommand cmd = new SqlCommand();
string fileName = ""; //Holds the file name retrieved from DB
byte[] data; // Holds the IMAGE data from DB

using (conn)
{
using (cmd)
{

cmd.CommandType = CommandType.Text;
cmd.CommandText = @"SELECT File_Name, Data FROM Tickets_All INNER JOIN Attachments ON Tickets_All.ID = Attachments.[Object_ID] WHERE Ticket = @Ticket";
cmd.Parameters.AddWithValue("@Ticket", _ticketNumber);
cmd.Connection = conn;
conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

if (reader.HasRows)
{
while (reader.Read())
{
fileName = reader.GetString(0);
data = (byte[])reader["Data"];

if (data != null)
{
SaveData(fileName, data);
}
}
}

reader.Close();

}
}

protected bool SaveData(string FileName, byte[] Data)
{
string path = @"C:\Windows\temp\test.jpg";

try
{
BinaryWriter writer = new BinaryWriter(File.OpenWrite(path));
writer.Write(Data);
writer.Flush();
writer.Close();
}
catch (Exception ex)
{
return false;
}

return true;
}

如果代码不符合最佳实践,请原谅我,我更像是一个 VB 程序员,我以前从来没有这样做过。我只是想得到一个工作示例。

提前致谢。

最佳答案

我会使用 Image.FromStream 方法来做到这一点: http://msdn.microsoft.com/en-us/library/system.drawing.image.fromstream(v=vs.110).aspx

protected bool SaveData(string FileName, byte[] Data)
{
using (Image image = Image.FromStream(new MemoryStream(Data)))
{
image.Save("MyImage.jpg", ImageFormat.Jpeg);
}

return true;
}

关于c# - 如何使用 C# 从 SQL Server 获取图像数据、写入文件、将文件保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com