我在通过带有multipart / form-data序列化的XForms提交来确定如何提交二进制文件时遇到了一些麻烦。对于某些背景,我试图使用ExtractingRequestHandler将文档文件(例如PDF)发布到Apache Solr中。我能够在命令行上成功发布CURL,但是我很难从XForms引擎发布(具体来说,我使用的是Orbeon)。
这是我的提交:
<xforms:submission
id="extract-document"
action="{instance('config')/solr}update/extract?literal.id={instance('doc')/mods:mods/mods:recordInfo/mods:recordIdentifier}&fmap.content=text"
ref="instance('form-data')"
replace="none"
method="post"
serialization="multipart/form-data">
我的表单数据实例是:
<xforms:instance id="form-data">
<formData>
<myFile
xsi:type="xs:anyURI"
filename="file.pdf"
size="2957563"
mediatype="application/pdf">file:/path/to/file.pdf</myFile>
</formData>
</xforms:instance>
我尝试从myFile元素中排除属性,但提交失败。我根本不知道如何构建表单数据实例。
感谢您的帮助。
2017年8月8日更新:在xforms:提交中通过multipart / form-data发布的问题从未真正得到解决。我在将表单数据发布到Web服务时尝试附加XML文件,但根据multipart/form-data XForms instance model的W3C规范,它没有被附加。
我创建了一个失败的全功能测试,即使<fname>
输入已正确绑定到xforms:upload控件,也会产生未附加文件的响应。我可以验证规范的第一部分(&#34;每个元素只有一个文本节点子项被选中包含。&#34;)在将身份验证信息传递给Web服务时确实起作用,因为我没有得到关于xforms-submit-error中事件(&#39; response-body&#39;)中缺少用户名或密码的错误。
这是要点:https://gist.github.com/ewg118/c182a8b4a69ff57bdb6b025950332e55
应根据XForms规范附加XML文件(如果我已正确完成所有操作),但它似乎无法正常工作。我正在测试Orbeon 2017.1,但它也没有在2015年末的版本中工作。