【问题标题】:Reading Byte[] into Database from API从 API 将 Byte[] 读入数据库
【发布时间】:2013-03-06 19:45:04
【问题描述】:

我一直在阅读this,因为我想通过 LINQ 执行此操作。但是,我一直无法弄清楚如何从 API 中读取数据。

当我输出resource.Data.Body 时,它会显示Byte[]

当我输出resource.Data.Size 时,它会显示834234822。 (或类似的东西)

我正在尝试像这样将内容保存到我的数据库中:

newContent.ATTACHMENT = resource.Data.Body;

但是,从未加载任何数据。我假设我必须遍历 Body 并将内容存储在一个变量中,但我不确定如何。

有人可以帮我把这些点联系起来吗?

编辑:

这是我试图读取的二进制数据的来源http://dev.evernote.com/start/core/resources.php

编辑 2:

我正在使用以下代码,它为我提供二进制数据并保存到数据库,但它一定是损坏的,或者是因为当我打开文件时 Windows 照片查看器说它已损坏或太大...

Resource resource = noteStore.getResource(authToken, attachment.Guid, true, false, true, true);

            StringBuilder data = new StringBuilder();

            foreach(byte b in resource.Data.Body)
            {
                data.Append(Convert.ToString(b, 2).PadLeft(8, '0'));  
            }
...
newContent.ATTACHMENT = System.Text.Encoding.ASCII.GetBytes(data.ToString());

【问题讨论】:

  • newContent 到底是什么以及它的关联属性ATTACHMENT
  • 这是一个通过 LINQ 的对象(镜像我的数据库)ATTACHMENTS_CONTENT newContent = new ATTACHMENTS_CONTENT();
  • 而属性ATTACHMENT,是byte[]吗?
  • 它是一个image 类型(在数据库中)。 编辑: 在 LINQ 的 .cs 文件中,它是 public System.Data.Linq.Binary ATTACHMENT
  • 如果有帮助的话,这里是资源结构dev.evernote.com/documentation/reference/…

标签: c# linq api bytearray evernote


【解决方案1】:

鉴于resource.Data.Bodybyte[]newContent.ATTACHMENTSystem.Data.Linq.Binary,您应该使用System.Data.Linq.Binary 上的构造函数,它接受byte[] 类型的输入参数。 http://msdn.microsoft.com/en-us/library/bb351422.aspx

newContent.ATTACHMENT = new System.Data.Linq.Binary(resource.Data.Body);

【讨论】:

  • 我已经走得更远了,请查看我的更新并让我知道您的意见。看来文件二进制数据已损坏,所以我认为我没有以正确的方式检索它。
  • 也许我的编码有误?我不知道如何检查。
  • 为什么现在将data 转换为字符串,然后再转换回ASCII 编码字节?该操作将总是损坏二进制数据。
  • 如果我只做newContent.ATTACHMENT = data;,它会说,“不能将类型'System.Text.StringBuilder'隐式转换为'System.Data.Linq.Binary'”
  • 啊哈!我刚试过你的解决方案,它奏效了!非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 2011-05-02
  • 2022-12-11
  • 1970-01-01
相关资源
最近更新 更多