欢迎来到天天文库
浏览记录
ID:22631719
大小:60.00 KB
页数:6页
时间:2018-10-30
《infopath 上传多附件解决方法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、InfoPath上传多附件解决方法 前几天,由于项目的需求,需要在infopath中上传多附件,当我用重复表设计好表单后。以为,客户的需求已经很容易的就搞定了 ,没想到当我在测试的到时候。发现了infopath在一次上传附件时,最大容量才5M 没办法,只好想别的解决方案了。之后,想到的方案就是:在表单提交之前讲infopath表单中的附件分解并上传到MOSS文档库中。 这样不当可以解决附件上传的问题,同时也避免了表单容量大的问题,可谓是一举两得 同时也支持附件的删除 首先看看设计的表单,两个
2、重复表,一个是用来上传多附件,另一个是用来存放上传附件的列表 当看到,上传附件列表中已经有数据是,可以到相应的文档库中找到infopath中上传的附件,如图标有新字样的就是infopath中的附件分解出来的 效果图,就是这样了,下面来看看终点的,代码部分 代码部分主要的技术点就是infopath附件的分解和对infopath重复表的操作 命名空间的引用 usingMicrosoft.Office.InfoPath; usingSystem; usingSystem.Xml; usingS
3、ystem.Xml.XPath; usingSystem.anager.ControlEvents[CTRL12_5]).Clicked+=neNav=MainDataSource.CreateNavigator(); XPathNodeIteratorroNav.Select(/my:myFields/my:group3/my:group5,NamespaceManager); XPathNodeIteratorroyNamespace=NamespaceManager.Look
4、upNamespace(my); Nav.Select(/my:myFields/my:group6/my:group7,NamespaceManager); stringattachment=roy:attachment,NamespaceManager).Value; byte[]attachmentBytes=Convert.FromBase64String(attachment); intnamebufferlen=attachmentByte
5、s[20]*2; byte[]fileNameBuffer=neebufferlen]; //Theactualfilenamestartsatposition24 for(inti=0;i<namebufferlen;i++) { fileNameBuffer[i]=attachmentBytes[24+i]; } //originalfilenameminusthelastcharacter!
6、 char[]asciiChars=UnicodeEncoding.Unicode.GetChars(fileNameBuffer); stringfileName=nee=fileName.Substring(0,fileName.Length-1); //arrayName.Add(fileName); //Thefileislocatedaftertheheader,e. byte[]fileContent=neentBytes
7、.Length-(24+namebufferlen)]; for(inti=0;i<fileContent.Length;i++) { fileContent[i]=attachmentBytes[24+nameb12下一页——..,。ufferlen+i]; } APanager).AppendChild()) { ent(group7,myNamespace); entS
8、tring(fieldID,myNamespace,k.ToString()); entString(fieldURL,myNamespace,attachUrl); entString(fieldNAME,myNamespace,fileName); ent(); Nav.SelectSingleNode(/my:myFields/my:group3/my:group
此文档下载收益归作者所有