【问题标题】:Insert image into varbinary(max) column from Azure Storage into Azure SQL Database将图像从 Azure 存储插入到 Azure SQL 数据库的 varbinary(max) 列
【发布时间】:2018-04-23 15:01:15
【问题描述】:

正如标题所示,我正在尝试从 Azure 大容量存储中添加一个图像,并将其放入我的 Azure SQL 数据库中的 VarBinary(Max) 列中。

我正在 Unity 中构建一个应用程序,其中每个用户都有一个徽标。此徽标特定于每个用户。我通过 PHP 代码向服务器发送 Web 请求,然后请求服务器从特定数据库中获取我需要的信息。所以我试图找到一种方法来确保每个用户(表中的行)都附有一个徽标。我在想如果将图像存储在数据库本身中是不正确的,那么是否可以对存储在 logo 列中的 URL 进行 Web 请求,然后从该 URL 绘制图像并在应用程序中使用它?如果是这样,有人知道我会怎么做吗?

我知道大容量存储提供了图像的 URL。此外,如果可能的话,我想将它添加到当前创建的行中。谢谢!

【问题讨论】:

  • 你为什么要这样做?恕我直言,更好的方法是将二进制数据存储在 Blob Storage 中,并将 blob URL 保存在数据库中。这将是一种更便宜、更高效的解决方案。
  • 我将如何引用该图像?假设它就像 Facebook 一样,表格中的每个人都有一张显示图片,您如何能够抓取该图片并确保它进入正确的人员帐户,而无需每次都对其进行硬编码?这就是为什么我认为将其存储在数据库中是一个不错的选择。
  • blob 存储中的每个项目(在您的情况下为用户图像)都有一个唯一的 URL。您可以简单地从数据库中获取图像 URL 并将其用作 img 标签中的 src 属性(假设您正在构建一个 Web 应用程序)。我可以建议您编辑您的问题并包含有关您想要完成的任务的更多详细信息。这里有人可以为您推荐一个好的解决方案。

标签: sql azure unity3d storage bulk


【解决方案1】:

假设: 用户图标以 Blob 形式存储在 Azure 存储帐户中,具有 Blob 级别的匿名读取访问权限 Blob URL 是 https://my-az.blob.core.windows.net/usericon/stafficon.png (将“my-az”替换为您的特定 Azure 租户名称) 您有两个单独的表 - UserDets 和 UserImg。将图像数据放在单独的表中总是更好。

在 SSMS 中执行这个命令 -

CREATE EXTERNAL DATA SOURCE MyUserAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE, LOCATION = 'https://my-az.blob.core.windows.net/usericon');

然后将图像插入到 VARBINARY 列中 -

Insert into UserImg (UserId, UserImg) 
(Select 1, BulkColumn FROM OPENROWSET( 
BULK 'staff icon.png', 
DATA_SOURCE = 'MyUserAzureBlobStorage', SINGLE_BLOB) AS ImageFile); 

如果您使用凭据进行 Blob 访问,则需要执行一些额外的步骤。但在当前实例中不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2018-04-13
    • 2011-03-26
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多