Как загрузить изображение на c#

Я получаю изображение с сайта ввиде массив байт, как я понял изображения хранятся в base64 поэтому конвертирую ее

Но вот как именно загрузить ее я не понимаю

В академии написано что надо грузить через таблицу sysImage , но где привязка к объекту, в который я хочу загрузить? 

Или мне надо загрузить изображение в эту таблицу, далее получить ее uri  или data и так грузить?

Может где то в стандартных схемах такое видели 

Нравится

7 комментариев
Лучший ответ

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

правда нашел я его уже после того как сделал свою реализацию, но смысл тот же что и описали выше, создаем запись , а дальше возвращаем ее айди вот впринципе и все

Показать все комментарии