Вопрос

Загрузить файл без FileApiService

Добрый день.

Мне надо создать эндпоинт для загрузки файлов. Есть FileApiService, он работает, но очень громоздкий по количеству параметров которые надо передавать вместе с файлом. Пытаюсь создать свой класс, в котором принять только файл и Id экземпляра объекта, а дальше уже считать размер и заполнять другие параметры для передачи в FileApiService, но не могу понять как передать файл, в переменную какого типа.

Нравится

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

Добрый день.

Александр, вам нужно использовать stream

Спасибо.

Вот я и пытаюсь сделать stream но не знаю как правильно

Вот здесь https://academy.terrasoft.ua/docs/7-17/developer/integrations_and_api/d… вроде как написан пример ПОЛУЧЕНИЯ ДАННЫХ а идет пример отправки из вне (Постман, например)



 

Пожалуйста, если не сложно, как правильно принять stream и создать веб-сервис? Можно передать stream в JSON?

Я испробовал слишком много разных вариантов, во всех случаях случались разные ошибки. 

Для передачи фото в JSON, нужно конвертировать его в Base64.

Mykhailo Storozhuk,

Спасибо.

Конвертировал фото на 

https://www.base64-image.de/

Теперь возникает ошибка 

"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. "

Вот код как пытаюсь сделать

byte[] byteArray = Convert.FromBase64String(item.file);
                Stream stream = new MemoryStream(byteArray);
				var size = Convert.ToInt32(stream.Length);
				var insertActivityFile = new Terrasoft.Configuration.UsrMobileCaseMessageFile(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.UsrMobileCaseMessageId = idMC;
        		insertActivityFile.Save();

 

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