C# 内存流将图像插入数据库
我需要你的帮助来解决这件事 我正在尝试将此图像alb.picture插入数据库。使用MemoryStream,我错过了一些阅读 代码没有返回任何错误,但它只是插入0X00000并检索select*…,它在网格中显示一个空白。。其余字段“创建日期”和“更新日期”在网格绘制期间都很好C# 内存流将图像插入数据库,c#,sql-server,C#,Sql Server,我需要你的帮助来解决这件事 我正在尝试将此图像alb.picture插入数据库。使用MemoryStream,我错过了一些阅读 代码没有返回任何错误,但它只是插入0X00000并检索select*…,它在网格中显示一个空白。。其余字段“创建日期”和“更新日期”在网格绘制期间都很好 foreach (Album alb in albms.data) { alb.picture = "https://graph.facebook.com/" + alb.id + "/pic
foreach (Album alb in albms.data)
{
alb.picture = "https://graph.facebook.com/" + alb.id +
"/picture/?access_token=" + Token;
MemoryStream ms = new MemoryStream(1000);
string sfn = alb.picture;
m_lImageFileLength = alb.picture.Length;
m_barrImg = new Byte[Convert.ToInt32(m_lImageFileLength)];
ms.Read(m_barrImg, 0, (int)m_lImageFileLength);
objBLL.insert_FacebookPhotos(Convert.ToInt64(ui.id), m_barrImg,
alb.created_time.ToString(), alb.updated_time.ToString());
}
非常感谢
SC您正在从空内存流中写入。首先,您可能希望在实例化时删除1000个容量
MemoryStream ms = new MemoryStream();
看起来实际的流在alb图片中。根据此对象的类型,您可能希望首先将其转换为字节[]。然后写入字节[],而不是将其读入MemoryStream ms:
ms.Write(b, 0, b.Length); // where b is your byte[]
根据正在处理的对象的类型,有许多方法可以转换为byte[]
或者,如果文件是一个文件,您可以通过其属性InputStream直接访问流。您正在从空的MemoryStream读取到空的新字节[]。实际数据在哪里;在第一行中,为alb.picture指定一个字符串;然后,您似乎将此字符串的长度作为数据的大小进行流式处理,请参见:m_lImageFileLength=alb.picture.Length;。再次说明:实际数据在哪里?您实际上并没有从服务器读取图像。通读您的代码并在纸上“运行”,写出每一行正在做什么,您将看到您失败的地方。然后查看HTTPWebRequest和HTTPWebResponse对象以弥补这一差距。