Burnett

淡定,执着......
posts - 29, comments - 109, trackbacks - 22, articles - 10
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

InfoPath的上传附件控件在MOSS中失效的解决办法

Posted on 2007-09-04 11:14 Burnett 阅读(...) 评论(...) 编辑 收藏
前几日需要在Infopath中保存文件,但是发现在web方式下只要上传文件,就产生如下提示(找不到所选文件):



假设你的MOSS2007是默认安装。

首先,打开工作流的workflow.xml文件,定位到<Workflow>节点。查看此节点下的此三个属性的值,
         AssociationUrl="_layouts/CstWrkflIP.aspx"
         InstantiationUrl="_layouts/IniWrkflIP.aspx"
         ModificationUrl="_layouts/ModWrkflIP.aspx"


然后在以下目录中定位这三个文件:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS

依此打开这些文件,查看他们的master文件。往往他们是这么来描述的:
MasterPageFile="~/_layouts/application.master"

然后定位到这个文件,打开它,然后定位到<form>标签,添加一个属性,enctype="multipart/form-data"。然后的结果类似于这个:
<form runat="server" onsubmit="return _spFormOnSubmitWrapper();" enctype="multipart/form-data">

接着保存,再重新启动IIS(必须要重启,否则会出现未知错误的提示,我想应该是MOSS的内部文件验证机制的问题)

修改后,文件即可以正常上传了



背景知识:
让我们来看看“multipart/form-data”属性在W3C里的定义吧。
The content type "application/x-www-form-urlencoded" is inefficient for sending large quantities of binary data or text containing non-ASCII characters. The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.
可见这个属性的功能是打开表单在上传中可能存在的非ASCII数据。比如照片、word文档等二进制数据。