Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 内存流将图像插入数据库_C#_Sql Server - Fatal编程技术网

C# 内存流将图像插入数据库

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

我需要你的帮助来解决这件事

我正在尝试将此图像alb.picture插入数据库。使用MemoryStream,我错过了一些阅读

代码没有返回任何错误,但它只是插入0X00000并检索select*…,它在网格中显示一个空白。。其余字段“创建日期”和“更新日期”在网格绘制期间都很好

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对象以弥补这一差距。