项目中遇到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类型的时间;第三个是根据条件判断该控件的状态。