将图像保存到数据库

2024-07-03

我有一些简单的实体,现在需要有一个个人资料图像。执行此操作的正确方法是什么?因此,这是一对一的关系,一张图像仅与一个实体相关,反之亦然。该图像应通过网络表单上传并插入相关实体。

如果有人能指出如何将图像持久保存到数据库和相关实体的正确方向,那就太好了。


只是一个侧面评论:我认为将图像存储在数据库中不是一个好主意.

一般来说,将图像存储在数据库中并不是一个好主意,因为数据库旨在存储文本而不是大的二进制块。最好存储图像路径并将图像放在文件夹中。如果您想确定具有实体 ID 的 1 对 1 关系名称图像 (1323.jpg)。

如果您想要图像路径,您应该遵循一些准则(在一般代码中是防御性的):

  • 上传图像时检查图像是否有效(甚至对图像标题进行了二进制检查)
  • 在插入新实体时不允许覆盖现有图像。
  • 将图像命名为主键(1.jpg、2.jpg)
  • 加载图像时,不要假设图像会在那里。
  • 不允许(如果可能)与图像进行手动交互(禁止在机器中进行远程处理以及将图像从一处复制到另一处)。手动交互可能会导致不一致。

但我认为出于某种原因你应该这样做。所以为了实现你想要的:

数据库设计

  • 在表中创建二进制列(binary 或 varbinary)
  • 如果您在具有 1-1 关系的不同表中创建它会更好。然而,这个想法是避免在水合实体时加载图像。使用延迟加载方法仅在需要时加载图像。
  • 当您进行大选择时,您必须避免加载图像(例如,如果您想加载组合中的所有实体,请避免从任何内容中选择 SELECT *),因为它会免费加载数千张图像。正如我所说,这可以通过将图像放在不同的表中,或者在 SELECT 中仅加载适当的列或通过延迟加载来完成。 (或者更好的是数据库中没有图像,只有路径)

C# Code

  • 使用 BinaryReader 来读取它
  • 用于存储它的用户字节数组

  • 检查此链接以获取代码示例:http://www.codeproject.com/Articles/21208/Store-or-Save-images-in-SQL-Server http://www.codeproject.com/Articles/21208/Store-or-Save-images-in-SQL-Server

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将图像保存到数据库 的相关文章

  • 如何从我的应用程序在用户默认浏览器中启动 URL?

    如何在桌面应用程序中添加一个按钮 使用户的默认浏览器启动并显示应用程序逻辑提供的 URL Process Start http www google com
  • 获取pygame中图像各个像素的颜色

    如何获取传输到 pygame 表面的图像像素的颜色值 使用 Surface get at 仅返回表面层的颜色 而不返回其上位图传输的图像 方法surface get at很好 下面的示例显示了在没有 Alpha 通道的情况下位图传输图像时的
  • 如何在C#中隐藏文件?

    我想在c 中隐藏一个文件 我知道文件路径并且可以创建 FileInfo 对象 我怎样才能隐藏它 之前接受的答案 File SetAttributes path FileAttributes Hidden 将导致它可能丢失某些其他属性 因此您
  • 如何检测动态绘制图形的点击?

    我正在面板上绘制文件和文件夹名称列表 并试图集体讨论检测用户是否单击文件 文件夹名称以及何时单击文件 文件夹名称以及他们实际单击的文件或文件夹名称的最佳方法 以下是我迄今为止编写的方法 我的第一个想法是用透明控件搭载每段文本 并以这种方式动
  • 如何连接 COM 事件调度程序?

    VBIDE API 揭示了令人惊奇的神秘之处 dispVBComponentsEvents接口 除其他外 其中看起来像我可以用它来捕获 VBE 中各种有趣的事件 因此 我在一个类中实现了该接口 该类旨在捕获事件并引发 正常 net 事件以供
  • 在程序中使用 resources.resx 中的嵌入文件

    我有一个程序 它需要一个文本文件来保存一些信息 我有当前使用文件路径的函数 然后用它来做一些事情 但是 我想将程序构建为 exe 但文件显然不会位于同一个位置 经过研究 我发现使用嵌入式资源可以让我将文本文件添加到程序中 但我似乎无法用它做
  • 在 Xamarin.Forms 中添加方向更改布局

    我需要实现的是 在将屏幕从纵向更改为横向时向现有页面添加布局 我已经成功地使用检测方向变化void OnSizeAllocation 双倍宽度 双倍高度 但我无法为此事件添加布局 我的示例 C 代码是 public class MyLayo
  • 使用 QProcessEnvironment 更改 cmd.exe 的 PATH 环境变量

    我想从设置了特定路径的 Qt 应用程序启动 cmd exe 我在 QProcessEnvironment 中插入 Path 并将该环境设置为 QProcess 然后我开始分离 cmd 在命令提示符上 路径与调用应用程序的路径相同 而不是我刚
  • 收据在打印文档中有重叠文本

    我正在 POS 项目中创建打印收据并附上输出的图片 我的问题是描述 数量 价格 金额的重叠 如何在这段代码的下一行显示数量 价格和金额 e Graphics DrawString Description new Font trebuchet
  • 无堆栈协程与堆栈协程有何不同?

    背景 我问这个问题是因为我目前有一个具有许多 数百到数千 线程的应用程序 这些线程中的大多数在很大一部分时间内处于空闲状态 等待将工作项放入队列中 当工作项可用时 它会通过调用一些任意复杂的现有代码来处理 在某些操作系统配置上 应用程序会遇
  • SerializeObject 抛出 System.OutOfMemoryException

    我对 JsonConvert SerializeObject 有一个严重的问题我需要序列化超过500 000条字典记录才能使序列化抛出以下错误 System OutOfMemoryException 我尝试在 foreach 中单独序列化每
  • 创建新选项卡并管理它们 - Selenium

    这是我的代码 var chromeOptions new ChromeOptions chromeOptions AddArguments headless driver new OpenQA Selenium Chrome ChromeD
  • 使用Swashbuckle ISchemaFilter设置输入参数的默认描述

    我想在文档架构中为所有具有 DateTime 类型的输入参数添加默认描述 这样客户就会了解我们正在使用哪些格式等 我可以为此目的创建 ISchemaFilter 的自定义实现吗 我知道我可以使用 xml 注释添加描述 但在这种情况下 我应该
  • Blazor - 重定向到一个解决方案中另一个项目中的页面

    我遇到了这样的情况 在一个解决方案中 想要将用户从一个项目的页面重定向到另一个项目的页面 这很重要 我在 blazor 服务器上做 任何人都可以教我一些东西吗 您始终可以注入 NavigationManager 通过此您可以将用户重定向到另
  • ncurses 和curses - 编译器未定义的引用

    好吧 我最初一直在尝试使用一些据称仅适用于 Windows 的标头 我的错 但我已经使用curses h 重现了我需要的内容 但是我仍然收到完全相同的错误 usr bin gmake f nbproject Makefile Debug m
  • 将字符串中的每个字符转换为 ASCII

    谁能告诉我如何轻松地将字符串中的每个字符转换为 ASCII 值 以便我可以对这些值求和 我需要对哈希函数的值求和 字符串中的每个字符都已经是 ascii include
  • Qt:如何处理用户按下“X”(关闭)按钮的事件?

    在 Qt 中 与用户单击窗口框架的 X 关闭 按钮 即此按钮 事件相对应的插槽是什么 如果没有这个插槽 在用户按下关闭按钮后是否有其他方法来触发功能 如果你有一个QMainWindow你可以覆盖closeEvent method inclu
  • 我是否需要显式关闭并处置 SQLConnection?

    SqlDataReader rdr null con new SqlConnection objUtilityDAL ConnectionString using SqlCommand cmd con CreateCommand try i
  • 在 EF core 中启用迁移吗?

    我正在开始使用 EF Core 2 0 我有一个针对 NET 4 6 1 的控制台应用程序 我有一个非常简单的模型类 以及这个上下文 public class ContextCore DbContext protected override
  • 谷歌模拟 - 我可以在同一个模拟对象上多次调用 EXPECT_CALL 吗?

    如果我打电话EXPECT CALL在同一个模拟对象上两次TEST F 会发生什么 期望是否附加到模拟对象中 或者第二次调用是否消除了第一次调用的效果 I found 后子句 https github com google googletes

随机推荐

  • 如何获取当前正在执行的 NSOperation?

    有没有相当于 NSOperationQueue currentQueue or NSThread currentThread for NSOperation 我有一个相当复杂的域模型 其中繁重的处理发生在调用堆栈的深处 为了及时取消操作 我
  • Visual Studio 不断调整我的表单大小,而无需我告诉它,救命! [复制]

    这个问题在这里已经有答案了 我正在运行 Visual Studio 2008 时常 当我进入其中一个表单的设计器视图时 设计器会将表单稍微放大一些 这种情况发生在我有最小尺寸的表单上 我希望表单是最小尺寸 那么为什么它不断调整我的尺寸 我在
  • 在分析 ruby​​ 应用程序时是否可以忽略不相关的方法?

    使用 ruby prof 时 以 graph html 模式打印 一种方法的报告显示 带有一些截图 Total Self Total Self Wait Child Calls Name Line 52 85 0 00 51 22 0 00
  • 将超类转换为子类[重复]

    这个问题在这里已经有答案了 想象一下一个班级平房扩建楼和代码 Building building new Building Cottage cottage Cottage building 现在 这是完全有道理的Building无法投射到C
  • Golang 使用 rsa 签署结构

    我有一个结构Transaction具有以下字段 type Transaction struct Sender string json sender Receiver string json receiver Signature string
  • main 中的退出函数

    我对 Stackoverflow 和 Java 比较陌生 但我对 C 有一点经验 我喜欢 C 在 exit 函数出现故障后退出程序的非常干净的方式 我在 Java 中发现了一个类似的函数 System exit 它与 C 函数有什么不同 什
  • Python clang 不搜索系统包含路径

    当从 Python 使用 libclang 时 它似乎不会自动搜索系统的包含路径 有没有可靠的方法来获取这些路径 我不喜欢硬编码路径 因为我正在编写将在各种 UNIX 系统上运行的代码 例如 给定 test cpp include
  • 在通用应用程序上分离 iPhone 和 iPad 类有什么优势吗?

    我有一个通用 适用于 iPhone 和 iPad 应用程序 在文件夹结构中将 iPad 类与 iPhone 类分开有什么优势吗 这是我的意思的一个例子 MyApp Resources Classes iPad SomeUniqueClass
  • 如何将字符串解析为日期?

    如何在 T SQL 中将字符串转换为日期 我的测试用例是字符串 24 04 2012 CONVERT datetime 24 04 2012 104 应该做到这一点 请参阅此处了解更多信息 CAST 和 CONVERT Transact S
  • Numpy TypeError:只有长度为 1 的数组可以转换为 Python 标量(重塑)

    在Python中 如果我重塑一个数组 一般来说没有问题 arr1 np array 1 2 3 4 print np reshape arr1 2 2 1 但是当我尝试重塑 10240 x 62 numpy ndarray 时遇到问题 a1
  • 自动调整容器

    有没有办法自动调整容器 DIV 高度以适应绝对定位的子 DIV 我想要得到类似的东西 container chld chld 1 2 chld 3
  • 带有复选框选项的 React 树视图

    如何创建树视图checkbox选项中react js checkbox应放置在树的右侧 下面是json创建树视图的示例 var json text Parent 1 nodes text Child 1 nodes text Grandch
  • 操作系统从 Tizen 2.3.2.3 升级到 Tizen 3.0.0.1 后 Gear S3 出现签名错误

    我的 Gear S3 在 Tizen 2 3 2 3 上运行 昨天 我将其更新到 Tizen 3 0 0 1 现在 当我尝试从 Tizen Studio 1 2 安装应用程序时 它显示以下错误 由于签名错误 设备上的应用程序安装失败 错误代
  • new 关键字的作用是什么?

    我很好奇还有什么new关键字在后台执行的操作除了改变this范围是指 例如 如果我们使用new关键字使函数在对象上设置属性和方法只是使函数返回一个新对象 新对象有什么额外的作用吗 如果我不想从函数构造函数创建多个对象 那么这是首选 var
  • 哪个最快? SELECT SQL_CALC_FOUND_ROWS FROM `table`,或 SELECT COUNT(*)

    当您限制 SQL 查询返回的行数 通常用于分页 时 有两种方法可以确定记录总数 Method 1 包括SQL CALC FOUND ROWS原版中的选项SELECT 然后通过运行获取总行数SELECT FOUND ROWS SELECT S
  • 如何在 iOS 中以动画方式更改暗模式?

    用户可以在应用程序设置的某一部分中切换主题 如下所示 这是通过改变来完成的window overrideUserInterfaceStyle 虽然它按预期工作 但更改根本没有动画 整个应用程序会立即转到所选样式 而不是 iOS 设置应用程序
  • NodeJS Web 应用程序文件上传会删除文件开头

    我正在做一个 NodeJS 项目 涉及文件上传 上传是在客户端完成的 代码如下 file upload bind change focus click function var file jQuery this 0 files 0 if f
  • 将生成的 PNG 图像放入 JSZip

    我在用JSZip https stuk github io jszip 制作一个程序 从画布元素生成图像数据并将图像放入 zip 文件中 现在 它正在将画布图像转换为 DataURL 然后 我删除了结果字符串中显示的部分data image
  • Mac 终端上的 CTRL-D 输出 D 字符

    我正在 mac OS X 机器终端上运行这个示例 来自 Kernighan 和 Ritchie 的 C 书第 1 5 2 节 include
  • 将图像保存到数据库

    我有一些简单的实体 现在需要有一个个人资料图像 执行此操作的正确方法是什么 因此 这是一对一的关系 一张图像仅与一个实体相关 反之亦然 该图像应通过网络表单上传并插入相关实体 如果有人能指出如何将图像持久保存到数据库和相关实体的正确方向 那