DWZ文件上傳,time轉化

項目中遇到DWZ文件上傳相關問題,所以記錄下,至於時間相關的問題經常遇到,特此也做下記錄。

DWZ文件上傳

首先是.html文件中,應有表單提交上傳文件。如下圖代碼,使用聯動文本框顯示文件名,點擊保存按鈕時提交表單。
注意οnsubmit=”return iframeCallback(this);”此處應使用iframeCallback(this)無刷新的表單提交,若是變成validateCallback(this,navTabAjaxDone)則會提示上傳失敗。
還有就是要注意enctype=”multipart/form-data”不要忘了寫。

<form  class="pageForm required-validate" onsubmit="return iframeCallback(this);" 
        method="post" enctype="multipart/form-data"
        action="url" name="form1" novalidate="novalidate">
<tr>
    <td class="L001">上傳文件: </td>
        <td class="L002">
           <input type="file" name="fileLocal" onchange="localFileOnChange(this)"/>
           <input type="text" id="fileName" name="fileName" style="width:300px"}/>
        </td>
</tr>
<button type="submit">保存</button>
<button type="button" class="close">關閉</button>

<script type="text/javascript">
// 用戶選擇文件, 觸發文件名文本框變動
function localFileOnChange(sender){
    $("#fileName").attr("value","");
    fn = sender.value.split(/\\|\//)
    $("#fileName").val(fn[fn.length-1]);
}
</script>

到controllers層,接收到相關信息,然後確定文件保存的目錄以及文件的命名。首先要根據os.MkdirAll方法創建目錄,然後調用SaveToFile方法保存文件(SaveToFile方法的第一個參數爲type=”file”的input的name,第二個參數爲文件的包含文件名的保存路徑)。

fileName := this.GetString("fileName")
dir := fmt.Sprintf("/upload/") //創建目錄
fnSplits := strings.Split(fileName, ".")//分割文件名123.png:123,png
// 創建文件夾
err := os.MkdirAll("./static"+dir, 0755)
//保存(上傳)文件
err = this.SaveToFile("fileLocal", "./static"+dir+fileName)

time轉化

主要是調用DWZ的時間控件之後,要將string類型的時間轉爲int64類型保存在數據庫中。.html中DWZ自帶的時間控件如下。

<input type="text" readonly="readonly" maxdate="%y-%M-{%d+90}" mindate="{%y}-%M-%d" datefmt="yyyy-MM-dd" name="deadline" class="required date textInput readonly valid">

到controllers層,接收到相關信息,然後把string類型轉化爲int64類型。

deadline := util.StringDate2Int64("2006-01-02", this.GetString("deadline"))

其中調用的util中的StringDate2Int64方法具體如下:

// 轉化字符串類型日誌爲int64
func StringDate2Int64(layout, value string) int64 {
    if value == "" {
        return 0
    }
    t, err := time.Parse(layout, value)
    if err != nil {
        return 0
    }
    return t.UnixNano() / 1e6
}

小結

以上就是大概的內容,其實挺簡單的。由於個人的知識淺薄,所以下面補充一下html中一些需要注意的地方吧。

補充

<td>
    {{if eq .Status 1}}<font color="red">待審覈</font>
    {{else if eq .Status 2}}<font color="green">發佈中</font>
    {{end}}
</td>
<td>{{dateformat .UpTime "2006-01-02 15:04:05"}}</td>
<input type="radio" value="1" name="prioity" id="radioType1" {{if eq .pro.Prioity 1}} checked="checked"{{end}}/>

第一個是判斷已知條件來顯示不同的視圖;第二個是規範顯示time.Time類型的時間;第三個是根據條件判斷該控件的狀態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章