Curl 多部分/表单数据提交的XForms实例的结构
我在弄清楚如何通过带有多部分/表单数据序列化的XForms提交来提交二进制文件时遇到了一些问题。在某些背景下,我尝试使用将文档文件(例如PDF)发布到ApacheSolr中。我能够在命令行上成功地使用CURL进行发布,但在XForms引擎中发布时遇到了困难(具体来说,我使用的是Orbeon) 以下是我的意见:Curl 多部分/表单数据提交的XForms实例的结构,curl,solr,orbeon,xforms,Curl,Solr,Orbeon,Xforms,我在弄清楚如何通过带有多部分/表单数据序列化的XForms提交来提交二进制文件时遇到了一些问题。在某些背景下,我尝试使用将文档文件(例如PDF)发布到ApacheSolr中。我能够在命令行上成功地使用CURL进行发布,但在XForms引擎中发布时遇到了困难(具体来说,我使用的是Orbeon) 以下是我的意见: <xforms:submission id="extract-document" action="{instance('config')/solr}update/e
<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>
文件:/path/to/file.pdf
我已尝试从myFile元素中排除属性,但提交失败。我只是不知道如何构造表单数据实例
谢谢你的帮助
2017年8月8日更新:xforms:submission中通过多部分/表单数据发布的问题从未真正得到解决。我试图在将表单数据发布到web服务时附加一个XML文件,但根据W3C的web服务规范,它没有被附加 我创建了一个失败的全功能测试,产生了一个文件尚未附加的响应,即使
输入已正确绑定到xforms:upload控件。我可以验证规范的第一部分(“选择包含恰好有一个文本节点子元素的每个元素”)在将身份验证信息传递给web服务时是否起作用,因为在xforms submit error上的事件('response-body')中,我没有收到关于缺少用户名或密码的错误
要点如下:
XML文件应该根据XForms规范附加(如果我做的一切都正确的话),但它似乎不起作用。我正在测试Orbeon 2017.1,但它在2015年后期的版本中也不起作用。这是Orbeon Forms吗?是的。我不确定是否有特定于Orbeon的解决方案。可以使用
application/octet-stream
将其序列化为字节。但这与多部分/表单数据
不同。我无法使用application/octet-stream将数据放入Solr,但这让我尝试使用base64对二进制文件进行编码并将其发布。我可以发布它们,但无法将它们解码回来。最终我发现解决方案是使用stream.url请求参数,如中的示例。这些参数在ExtractingRequestHandler的Solr wiki中没有很好的文档记录