跳轉到內容

XForms/儲存中間表單資料

來自華夏公益教科書

注意 - 此頁面正在開發中

[編輯 | 編輯原始碼]

儲存中間表單資料

[編輯 | 編輯原始碼]

此示例將向您展示如何將中間表單資料儲存到本地磁碟。

有時填寫長表格需要一段時間。您希望允許使用者填寫表格的一部分,登出,然後在返回時恢復他們的表格。有時這些中間資料可以作為表單使用者頻繁重新輸入的欄位的預設模板使用。

跨域釋出的安全問題

[編輯 | 編輯原始碼]

預設情況下,XForms 不允許從一個域提供表單,然後在沒有使用者警告的情況下訪問另一個域。這可能會允許一個惡意表單在未經授權的情況下訪問本地檔案。

這反映在例項中的“src”標籤只能引用硬編碼的靜態字串這一事實中。如果您從 Web 伺服器載入了表單,則無法將本地檔案載入到例項中。

請注意,您可以使用支援 file: 型別的 XForms 應用程式(如 FireFox)讀取和寫入本地檔案系統上的本地檔案。但表單必須在 XForms 例項 src 屬性中靜態編碼此路徑。

步驟 1:儲存到客戶端

[編輯 | 編輯原始碼]

儲存例項資料

   <xf:submission id="save-instance-to-client"
      method="put"
      action="file://C:/tmp/xforms/my-data.xml"
      replace="instance"
      instance="my-instance"
    />

步驟 2:從客戶端讀取

[編輯 | 編輯原始碼]

儲存例項資料

   <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-fileread-instance-from-file 兩個 xf:submission 中的 action 屬性的值應為一個變數:action="file://C:/tmp/xforms/my-data.xml" 應自動更改為 FilePath 值。

解決方案

[編輯 | 編輯原始碼]

要使它正常工作,您必須處理安全問題……

有一篇帖子提到了使用 chrome:// 字首而不是 file:// 字首,但沒有給出示例。也有一些關於使用 cookie:// 儲存到 cookie 的討論。

參考文獻

[編輯 | 編輯原始碼]
  • [1] 跨域提交
  • [2] Mark Bireck 的評論
下一頁: 三文件載入 | 上一頁: 使用 get 和 put 讀取和寫入
首頁: XForms
華夏公益教科書