Добавить файл PDF в качестве вложения в TestTrack с помощью SOAP

Я недавно начал использовать C# в прошлом году, поэтому я немного новичок в этом, но обычно могу взломать вещи с некоторыми усилиями, но этот ускользает от меня. Мы используем TestTrack для разработки ошибок / отслеживания проблем в нашей компании. Я создал специальное приложение для создания оконных форм, которое будет входить в TestTrack для одного из наших отделов. Он подключается с использованием SOAP. Я не использую WPF/WCF и не хочу идти по этому пути. У меня возникают трудности с поиском примеров правильного кодирования файла для вложения в формате PDF. Приведенный ниже код на самом деле создает вложение в TestTrack к уже существующей проблеме, но при попытке открыть его в TestTrack появляется сообщение об ошибке "Недостаточно данных для изображения". Приведенный ниже пример работает, если вы хотите добавить текстовый файл в TestTrack с помощью SOAP. Я хочу знать, что мне нужно изменить ниже, чтобы я мог получить PDF-файл в TestTrack и затем иметь возможность открыть его в приложении TestTrack без указанной выше ошибки. Заранее спасибо за любой вклад / помощь.

    public void getAttachments(long lSession, CDefect def)
    {
        ttsoapcgi cgiengine = new ttsoapcgi();

        // Lock the defect for edit.
        CDefect lockedDefect = cgiengine.editDefect(lSession, def.recordid, "", false);

        string attachment = "c:\\TEST\\TEST_PDF.PDF";

        CFileAttachment file = new CFileAttachment();
        file.mstrFileName = Path.GetFileName(attachment);

        System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();

        StreamReader reader = new StreamReader(attachment);
        file.mstrFileName = Path.GetFileName(attachment);
        file.mpFileData = enc.GetBytes(reader.ReadToEnd());
        reader.Close();

        CReportedByRecord reprec = lockedDefect.reportedbylist[0];
        CFileAttachment[] afile = reprec.attachmentlist;
            if (afile == null)
            {
                lockedDefect.reportedbylist[0].attachmentlist = new CFileAttachment[1];
                lockedDefect.reportedbylist[0].attachmentlist[0] = file;
            }

            // Save our changes.
            cgiengine.saveDefect(lSession, lockedDefect);
    }
}

1 ответ

Вот модифицированный метод, который позволил мне прикрепить PDF-файл к SOAP и получить его в TestTrack как приложение к проблеме:

        public void getAttachments(long lSession, CDefect def)
    {
        ttsoapcgi cgiengine = new ttsoapcgi();

        // Lock the defect for edit.
        CDefect lockedDefect = cgiengine.editDefect(lSession, def.recordid, "", false);

        string attachment = "c:\\TEST\\TEST_PDF.PDF";

        CFileAttachment file = new CFileAttachment();

        file.mpFileData = File.ReadAllBytes(attachment);
        file.mstrFileName = Path.GetFileName(attachment);

        CReportedByRecord reprec = lockedDefect.reportedbylist[0];
        CFileAttachment[] afile = reprec.attachmentlist;
            if (afile == null)
            {
                lockedDefect.reportedbylist[0].attachmentlist = new CFileAttachment[1];
                lockedDefect.reportedbylist[0].attachmentlist[0] = file;
            }

            // Save our changes.
            cgiengine.saveDefect(lSession, lockedDefect);
    }
Другие вопросы по тегам