#c# #sql-server
#c# #sql-сервер
Вопрос:
Мне понадобится ваша помощь в решении этой части.
Я пытаюсь вставить это изображение alb.picture в базу данных. Для использования MemoryStream
, я пропустил кое-что из прочитанного здесь.
Код не возвращает никаких ошибок, но он просто вставляет 0X00000 и извлекает (select * ....)
, он показывает пробел в таблице.. Остальные поля, created_date
и updated_date
в порядке во время dipslay сетки.
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
Комментарии:
1. Вы читаете из (пустого)
MemoryStream
в (пустой) новыйbyte[]
). Где фактические данные?2. Также; в первой строке вы присваиваете
string
значениеalb.picture
; затем позже вы, похоже, передаетеLength
эту строку в качестве размера данных (см.:m_lImageFileLength = alb.picture.Length;
). Еще раз: где фактические данные?3. На самом деле вы не считываете изображение с сервера. Прочитайте свой код и «запустите» на бумаге, напишите, что делает каждая строка, и вы увидите, где у вас сбой. Затем посмотрите на объекты HttpWebRequest и HttpWebResponse, чтобы устранить пробел.
Ответ №1:
Вы пишете из пустого потока памяти. Во-первых, вы можете захотеть удалить емкость 1000 при создании его экземпляра.
MemoryStream ms = new MemoryStream();
Похоже, что фактический поток находится в alb.picture
. В зависимости от типа этого объекта, вы хотели бы сначала преобразовать его в byte[]
. Затем запишите byte[]
(вместо чтения) в MemoryStream ms:
ms.Write(b, 0, b.Length); // where b is your byte[]
Существует много способов преобразования в byte[]
в зависимости от типа объекта, над которым вы работаете.
В качестве альтернативы, если файл является HttpPostedFileBase, вы можете получить к нему доступ Stream
напрямую через его свойство InputStream
.