XForms/保存中间表单数据
外观
< XForms
此示例将向您展示如何将中间表单数据保存到本地磁盘。
有时填写长表格需要一段时间。您希望允许用户填写表格的一部分,注销,然后在返回时恢复他们的表格。有时这些中间数据可以作为表单用户频繁重新输入的字段的默认模板使用。
默认情况下,XForms 不允许从一个域提供表单,然后在没有用户警告的情况下访问另一个域。这可能会允许一个恶意表单在未经授权的情况下访问本地文件。
这反映在实例中的“src”标签只能引用硬编码的静态字符串这一事实中。如果您从 Web 服务器加载了表单,则无法将本地文件加载到实例中。
请注意,您可以使用支持 file: 类型的 XForms 应用程序(如 FireFox)读取和写入本地文件系统上的本地文件。但表单必须在 XForms 实例 src 属性中静态编码此路径。
保存实例数据
<xf:submission id="save-instance-to-client"
method="put"
action="file://C:/tmp/xforms/my-data.xml"
replace="instance"
instance="my-instance"
/>
保存实例数据
<xf:submission id="read-instance-from-client"
method="get"
action="file://C:/tmp/xforms/my-data.xml"
replace="instance"
instance="my-instance"
/>
请注意,要查找文件,您可以使用 <xf:upload> 控件
<xf:upload ref="FilePath">
<xf:mediatype>text/xml</xf:mediatype>
</xf:upload>
save-instance-to-file
和 read-instance-from-file
两个 xf:submission
中的 action
属性的值应为一个变量:action="file://C:/tmp/xforms/my-data.xml"
应自动更改为 FilePath
值。
要使它正常工作,您必须处理安全问题……
有一篇帖子提到了使用 chrome:// 前缀而不是 file:// 前缀,但没有给出示例。也有一些关于使用 cookie:// 保存到 cookie 的讨论。