Подскажите сабж, пожалуйста.

Вот есть картинка в виде byte[] - как её зааплоадить через OData в Contact.ContactPhoto?

Спасибо.

Нравится

3 комментария

Товарищи, а удалось ли кому это сделать?
За пример был бы очень благодарен :cool:

Коллеги, сделал пример работы с потоками через oData с
использованием WCF-клиента. Привожу код функции консольного приложения,
которое пишет файл из базы потоком в файл на диске и, соответственно,
файл на диске пишет в базу. Сначала, естественно, сгенерированы классы клиента
как это описано в SDK.
Пример только для показа технологии, не несет подробностей и особого смысла, поэтому
не судите строго.
Тот же принцип можно использовать и при передаче фотографий, только таблицы и поля будут другими.

static void Main(string[] args)
{
    // URI сервиса oData.            
    Uri svcUri = new Uri("http://localhost/0/ServiceModel/EntityDataService.svc/");
 
    // Создаем контекст приложения BPMonline. 
    BPMonline context = new BPMonline(svcUri);
    // Указываем имя и пароль пользователя BPMonline.
    context.Credentials = new NetworkCredential("Login", "Password");
 
//=============== Чтение потоковых данных из базы в файл
 
    // Читаем первую запись из коллекции файлов
    BpmonlineService.File file = (from f in context.FileCollection
                                  select f).First();
 
    // Тип передаваемого контента
    DataServiceRequestArgs _args = new DataServiceRequestArgs();
    _args.ContentType = "application/octet-stream";
 
    // Получаем поток с двоичными данными из поля Data
    using (Stream rs = context.GetReadStream(file, "Data", _args).Stream)
    {
        // Создаем файл в текущем каталоге
        using (Stream fs = new FileStream(file.Name, FileMode.Create))
        {
            // Пишем поток в файл
            rs.CopyTo(fs);
        }
    }
 
//=============== Запись файла в базу данных
 
    // Открываем файл, который будем записывать
    using (FileStream fs = new FileStream("Data.xls", FileMode.Open))
    {
        // Создаем новый файл и инициализируем свойства.
        BpmonlineService.File NewFile = new BpmonlineService.File()
        {
            Id = Guid.NewGuid(),
            Name = fs.Name
        };
 
        // Добавляем созданный файл в коллекцию файлов контекста сервиса.
        context.AddToFileCollection(NewFile);
        // Сохраняем изменения данных в BPMonline
        context.SaveChanges();
 
        // Пишем поток в поле Data
        context.SetSaveStream(NewFile, "Data", fs, true, _args);
 
        // Сохраняем изменения данных в BPMonline
        context.SaveChanges();
    }
}
Показать все комментарии