c# - 在 SQL Server 中保存文件和图像

标签 c# sql-server database windows-applications

我使用以下代码在 SQL Server 中将 word 文件和图像保存为 varbinary 类型:

文件:

byte[] data = null;

FileInfo fInfo = new FileInfo(newfile);
long numBytes = fInfo.Length;

FileStream fStream = new FileStream(newfile, FileMode.Open, FileAccess.ReadWrite);

BinaryReader br = new BinaryReader(fStream);
data = br.ReadBytes((int)numBytes);

return data;

和图像:

using (MemoryStream ms = new MemoryStream())
{
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
}

但是他们的表使用量很大,所以数据库的备份文件也很大。

我该怎么做才能以低音量保存它们?

最佳答案

您可以将二进制文件存储在服务器上的文件夹中,但这一次您可能会遇到备份和还原操作以及同步数据库文件数据和数据文件夹文件的问题。

将数据存储在数据库中管理并消除了这些复杂性 即使使用 SQL Server 2012,我们也有一个表类型,FileTable 可以尝试使用SQL Server的FileStream特性,通过简单的文件夹复制粘贴或删除等操作,使文件事务的管理更简单。 所以就像将文件保存到服务器上的文件夹一样,您直接将文件数据插入到FileTable中。 当然,您的数据库大小会再次增加,但这样更方便。

关于c# - 在 SQL Server 中保存文件和图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48059448/

相关文章:

sql - Postgresql:仅当表不存在时如何创建表?

c# - 什么是控制反转/面向方面意义上的 .NET 代理对象?

c# - 转换方法。 "The specified method on the type cannot be translated into a LINQ to Entities store expression"

sql - 为什么我不能使用变量代替字符串作为参数

C# - 更新 SQL Server 中的日期时间列

javascript - 如何构建具有连接数据库的拖放 Web 应用程序?

c# - 为什么带有多个分号的代码可以编译?

c# - 团队选项卡上的 Asp.net WebForms 无提示身份验证 AAD

sql-server - SQL Server 无效版本 : 15 (Microsoft. SqlServer.Smo)

php - 允许用户使用 mysql php 重新排列表数据