Я получаю изображение с сайта ввиде массив байт, как я понял изображения хранятся в base64 поэтому конвертирую ее
Но вот как именно загрузить ее я не понимаю
В академии написано что надо грузить через таблицу sysImage , но где привязка к объекту, в который я хочу загрузить?
Или мне надо загрузить изображение в эту таблицу, далее получить ее uri или data и так грузить?
Может где то в стандартных схемах такое видели
Нравится
Dima Avdoshin,
Грузим просто создав запись в C# в таблице SysImage.
Вот подобный пример, не про картинку, тут главное SetStreamValue и работа с байтовыми данными.
Вот пример создания записи на детали Файлы и ссылки. Вам необходимо получить поток с файлом и записать его в поле Data.
Stream stream = new MemoryStream(byteArray);
var size = Convert.ToInt32(stream.Length);
var insertActivityFile = new Terrasoft.Configuration.ActivityFile(context.UserConnection);
insertActivityFile.Id = Guid.NewGuid();
insertActivityFile.SetDefColumnValues();
insertActivityFile.Name = "Name.txt";
insertActivityFile.SetStreamValue("Data", stream);
insertActivityFile.Size = size;
insertActivityFile.TypeId = new Guid("529BC2F8-0EE0-DF11-971B-001D60E938C6");
insertActivityFile.Version = 1;
insertActivityFile.ActivityId = activityId;
insertActivityFile.Save();
Куда вы их грузить собрались, какая бизнес задача?
Полозюков Евгений Петрович,
необходимо с сайта получить превью изображения, далее ее отобразить в соответствующем разделе
В карточке контрагента есть вверху слева элемент с изображением. Вам нужен упрощенный вариант, смотрите как это реализовано в карточке. Изображение хранится в SysImage, поле в контрагенте AccountLogo ссылается на SysImage. В SysImage данные хранятся в виде байт, без base64, поле Data и PreviewData.
В AccountPageV2 изучите элемент "name": "Photo", "parentName": "AccountPhotoContainer".
Вот еще статья https://academy.terrasoft.ru/docs/developer/elements_and_components/bas…
Полозюков Евгений Петрович,
Понял, скорее всего как, мы обращаемся в таблицу sysImage , далее грузим изображение и получаем guid новосозданного изображения , который и грузим куда нам необходимо так ?
Примерно так вот
private static Guid AddImage(string ImgUrl) { UserConnection userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"]; Guid newId = Guid.NewGuid(); EntitySchema schemaImage = userConnection.EntitySchemaManager.GetInstanceByName("SysImage"); Entity addImage = schemaImage.CreateEntity(userConnection); addImage.SetColumnValue("Id", newId.ToString()); //addImage.SetColumnValue("Name", "lol"); addImage.SetColumnValue("Data", ImgToByte(ImgUrl)); addImage.Save(); return newId; }
Dima Avdoshin,
Грузим просто создав запись в C# в таблице SysImage.
Вот подобный пример, не про картинку, тут главное SetStreamValue и работа с байтовыми данными.
Вот пример создания записи на детали Файлы и ссылки. Вам необходимо получить поток с файлом и записать его в поле Data.
Stream stream = new MemoryStream(byteArray);
var size = Convert.ToInt32(stream.Length);
var insertActivityFile = new Terrasoft.Configuration.ActivityFile(context.UserConnection);
insertActivityFile.Id = Guid.NewGuid();
insertActivityFile.SetDefColumnValues();
insertActivityFile.Name = "Name.txt";
insertActivityFile.SetStreamValue("Data", stream);
insertActivityFile.Size = size;
insertActivityFile.TypeId = new Guid("529BC2F8-0EE0-DF11-971B-001D60E938C6");
insertActivityFile.Version = 1;
insertActivityFile.ActivityId = activityId;
insertActivityFile.Save();
Полозюков Евгений Петрович,
да все помогло спасибо
на будущее для тех кто будет искать ответ пример подобного реализован в
ProfileImageLoader пакета OmnichannelMessaging
правда нашел я его уже после того как сделал свою реализацию, но смысл тот же что и описали выше, создаем запись , а дальше возвращаем ее айди вот впринципе и все