Подскажите сабж, пожалуйста.
Вот есть картинка в виде byte[] - как её зааплоадить через OData в Contact.ContactPhoto?
Спасибо.
Нравится
Здравствуйте, Леонид!
Посмотрите следующие статьи по теме:
http://stackoverflow.com/questions/7003953/saving-a-generated-png-file-…
http://stackoverflow.com/questions/7324190/how-to-store-images-to-a-var…
Товарищи, а удалось ли кому это сделать?
За пример был бы очень благодарен :cool:
Коллеги, сделал пример работы с потоками через oData с
использованием WCF-клиента. Привожу код функции консольного приложения,
которое пишет файл из базы потоком в файл на диске и, соответственно,
файл на диске пишет в базу. Сначала, естественно, сгенерированы классы клиента
как это описано в SDK.
Пример только для показа технологии, не несет подробностей и особого смысла, поэтому
не судите строго.
Тот же принцип можно использовать и при передаче фотографий, только таблицы и поля будут другими.[csharp]
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();
}
}
[/csharp]