2013-01-23 40 views
0

我最近在过去的一年中开始使用C#,所以我对此有点新,但通常可以通过一些努力破解事情,但是这一个正在逃避我。我们在我们公司使用TestTrack进行开发bug /问题跟踪。我创建了一个自定义窗体表单应用程序,作为我们其中一个部门的TestTrack的前端。它使用SOAP进行连接。我没有使用WPF/WCF,也不想走这条路。我很难找到任何如何正确编码附件的PDF文件的例子。下面的代码确实在TestTrack中创建了一个附件到已存在的问题,但是当您尝试在TestTrack中打开它时,它会弹出一条错误消息,指出“图像数据不足”。如果您想使用SOAP将文本文件添加到TestTrack,下面的示例可以工作。我想知道下面需要更改的内容,以便我可以将PDF文件导入TestTrack,然后在TestTrack应用程序中打开它,而不会出现上述错误。预先感谢任何输入/帮助。使用SOAP添加PDF文件作为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); 
    } 
} 
+0

进入数字。在寻求帮助的一小时内,我找到了解决方案的答案。吉兹。无论如何,我很高兴。 :-)一旦本网站允许我这样做,我会在几个小时内发布我的答案。 – ARW3

回答

0

下面是修改的方法,让我一个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); 
    } 
相关问题