【问题标题】:asp.net core web api reading BLOBasp.net core web api读取BLOB
【发布时间】:2021-12-14 11:34:37
【问题描述】:

我们有下表:

使用以下c#模型

 public record PSSEGMENTPICTURE
    {
        public int PSID { get; init; }
        public int PSEDISEGMENTID { get; init; }
        public byte[] PSIMAGE { get; init; }
    }

执行以下查询我得到以下结果

  public JsonResult GetSegmentPictures()
        {
            return _sql.ExecuteQuery(@"SELECT * FROM PSSEGMENTPICTURES");
        }

回应

[
  {
    "PSID": 1,
    "PSEDISEGMENTID": 1,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:48:59"
  },
  {
    "PSID": 2,
    "PSEDISEGMENTID": 2,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:49:00"
  },
  {
    "PSID": 3,
    "PSEDISEGMENTID": 3,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:49:01"
  },
  {
    "PSID": 4,
    "PSEDISEGMENTID": 4,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:49:02"
  },
  {
    "PSID": 5,
    "PSEDISEGMENTID": 5,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:49:02"
  },
  {
    "PSID": 6,
    "PSEDISEGMENTID": 6,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:49:03"
  },
  {
    "PSID": 7,
    "PSEDISEGMENTID": 7,
    "PSIMAGE": null,
    "created_at": "2021-10-29T12:49:05"
  }]

我做错了什么?当然,所有条目在 PSIMAGE 列中都有 blob 值。 在网上查看我发现与 blob 对应的类型是 byte[] 但这不应该是这种情况下的问题,因为我将查询结果直接返回到 json 而不将其映射到模型。

【问题讨论】:

标签: c# sql asp.net blob


【解决方案1】:

JSON 是一种基于文本的格式。它不能包含原始字节数组。 如果要检索字节数组,则查询的返回类型不应为 JSON。

一种解决方案可能是返回模型类实例的集合。

顺便说一句,当需要将字节数组包含在 JSON 文件中时,首先需要将其转换为字符串表示形式,例如使用 base64 字符串 见Put byte array to JSON and vice versa 但是在您的情况下,我认为这不应该是尝试实现的目标,因为我不知道在创建 JSON 时您是否有任何方法可以强制执行此操作。我只是提及它以供参考。

【讨论】:

  • 感谢您抽出宝贵时间 Laurent,我可以清楚地理解您的意思,您认为值得将 blob 转换为 base64 字符串然后创建响应吗?你会怎么做呢?
  • 你用什么来访问你的数据库?实体框架?别的东西?如果您使用实体框架,只需返回您的模型的集合。请注意,您的模型不能是记录,它必须是类,因为 EF 引擎会跟踪对象的更改,它无法跟踪记录等不可变对象。
  • 我正在使用 mysql.data 包,如果您能找到示例存储库,我想我明白了您的解释,我将不胜感激
  • 好的,所以您正在使用 ADO.Net。您应该首先查看是否要坚持使用 ADO.Net 或使用 ORM,例如 EF Core 或 Dapper。对于 ADO.Net,您必须查看 MySqlDataReader 类。有关示例,请参见 stackoverflow.com/questions/5371222/…
  • 很多关于你的答案的好信息,非常感谢
猜你喜欢
  • 2021-11-12
  • 2021-10-13
  • 2020-03-24
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2018-11-30
  • 1970-01-01
相关资源
最近更新 更多