Получить вложения из XML-данных с помощью C # для Crm 2015 - PullRequest
0 голосов
/ 13 июня 2018

у нас есть сайт, на котором клиент пишет свой инцидент с вложениями.Я могу получить инцидент и сохранить его в системе Crm 2015.Однако я хочу также сохранить вложения, такие как изображения и т. Д.

Я получаю инциденты из xml и читаю по одному и сохраняю в Crm 2015 System:

foreach (XElement xmlIncident in xmlIncidents)
{

}

В этом foreach яможно получить значения вложения:

var attachments = xmlIncident.Elements("attachments"); //get the collection of attachments.

В качестве примера можно привести инцидент, у меня есть 4 jpg фотографии, и один из них выглядит так в коде c #:

https://docs.sikayetvar.com/complaint/1054/10543034/gbhjk-1528636381_160x160.jpg https://docs.sikayetvar.com/complaint/1054/10543034/gbhjk-1528636381.jpg фотография

Мой вопрос: как я могу получить вложения из XML-данных и сохранить их в таблице инцидентов Crm 2015, используя c #

enter image description here

1 Ответ

0 голосов
/ 13 июня 2018

Полагаю, не стоит обновлять базу данных CRM напрямую, так как в CRM SDK есть много всего доступного.

Шаги для выполнения:

  1. Получите путь к файлу из XML
  2. , убедитесь, что тип файла jpg , затем прочитайте файл как Base64 строка
  3. Создать объект типа Annotation, где objectid = GUID записи

Посмотрите на приведенный ниже код, он должен работать для вас

Guid AttachToIncident(string filePath, Guid recordGuid){    
    Func<string,string> imageToBase64 = (fpath) => {
        using (Image image = Image.FromFile(fpath))
        {
            using (MemoryStream memStrm = new MemoryStream())
            {
                image.Save(memStrm, image.RawFormat);
                byte[] imageBytes = memStrm.ToArray();
                string base64String = Convert.ToBase64String(imageBytes);
                return base64String;
            }
        }   
    };

    string fileName = Path.GetFileName(filePath);

    Guid attachmentId = Guid.Empty;

    Entity newAnnotation = new Entity("annotation");
    newAnnotation["subject"] = "external attachment";
    newAnnotation["filename"] = filename;
    newAnnotation["mimetype"] = @"image/jpeg";
    newAnnotation["documentbody"] = imageToBase64(filePath);
    newAnnotation["objectid"] = new EntityReference("incident", recordGuid);

   //you must be knowing what this service is ;)
    attachmentId = orgService.Create(newAnnotation); 
    return attachmentId;    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...