2021-06-13
来源:华纳网
责任编辑:王双双
人气:
核心提示:【谷雨课堂】Go实战 No.018 Go干货!网站服务上传图片或文件
知识点:
上传图片或文件
本课内容:
大家好,欢迎来到谷雨课堂,
上节我们讲了表单数据的提交与获取
在上节中我们提到,有一种表单组件类型
叫做,文件上传。
这个组件非常重要,因为几乎所有的图片及文件上传
都需要使用这个组件。
本节我们还是使用传统的表单进行文件或图片的上传
<input type="file" name="img">
在表单中,一定要指定传输的类型
enctype="multipart/form-data"
例子
<hr>
<form method="post" action="/save_upload" target="_blank" enctype="multipart/form-data">
图片:<input type="file" name="img"><br>
<hr>
<input type="submit" name="btnOk" value="保存">
</form>
func InitWebApi() {
log.Println("GuYu GoLang ....")
webServer := gin.Default()
//注册模板目录
webServer.LoadHTMLGlob("tpl/*")
webServer.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index_upload.html", gin.H{})
})
webServer.POST("/save_upload", func(c *gin.Context) {
str := "ok"
file, e := c.FormFile("img")
if e != nil {
c.JSON(200, gin.H{
"code": -100,
"msg": e.Error(),
})
return
}
sExt := path.Ext(file.Filename)
sExt = strings.ToLower(sExt)
sDestFile := "upload/" + common.Hms() + "_" + common.Rnd(16) + sExt
e = c.SaveUploadedFile(file, sDestFile)
if e != nil {
c.JSON(200, gin.H{
"code": -101,
"msg": e.Error(),
})
return
}
c.String(http.StatusOK, str)
})
webServer.Run(":8090")
}
引申阅读:
H5对文件上传新增了很多属性和方法。
/**
* FileReader
* 1、构建FileReader实例
* 2、选择要使用的读取方式,如:readAsDataURL(),将文件对象传递给该方法
* 3、监听读取完成事件 onload,通过 this.result 得到读取结果
* 4、其他事件监听
*
* 读取方式:
* readAsDataURL(file) 读取地址
* readAsText(file[,encoding]) 读取文本
* readAsBinaryString(file) 以二进制读取
*
* 事件:
* onload 读取完成
* onloadstart 开始读取
* onloadend 结束读取 无论成功与否都会触发
* onerror 错误触发
* onabort 中断读取时触发
*
* abort() 中断读取方法
* */
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
上传图片或文件
本课内容:
大家好,欢迎来到谷雨课堂,
上节我们讲了表单数据的提交与获取
在上节中我们提到,有一种表单组件类型
叫做,文件上传。
这个组件非常重要,因为几乎所有的图片及文件上传
都需要使用这个组件。
本节我们还是使用传统的表单进行文件或图片的上传
<input type="file" name="img">
在表单中,一定要指定传输的类型
enctype="multipart/form-data"
例子
<hr>
<form method="post" action="/save_upload" target="_blank" enctype="multipart/form-data">
图片:<input type="file" name="img"><br>
<hr>
<input type="submit" name="btnOk" value="保存">
</form>
func InitWebApi() {
log.Println("GuYu GoLang ....")
webServer := gin.Default()
//注册模板目录
webServer.LoadHTMLGlob("tpl/*")
webServer.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index_upload.html", gin.H{})
})
webServer.POST("/save_upload", func(c *gin.Context) {
str := "ok"
file, e := c.FormFile("img")
if e != nil {
c.JSON(200, gin.H{
"code": -100,
"msg": e.Error(),
})
return
}
sExt := path.Ext(file.Filename)
sExt = strings.ToLower(sExt)
sDestFile := "upload/" + common.Hms() + "_" + common.Rnd(16) + sExt
e = c.SaveUploadedFile(file, sDestFile)
if e != nil {
c.JSON(200, gin.H{
"code": -101,
"msg": e.Error(),
})
return
}
c.String(http.StatusOK, str)
})
webServer.Run(":8090")
}
引申阅读:
H5对文件上传新增了很多属性和方法。
/**
* FileReader
* 1、构建FileReader实例
* 2、选择要使用的读取方式,如:readAsDataURL(),将文件对象传递给该方法
* 3、监听读取完成事件 onload,通过 this.result 得到读取结果
* 4、其他事件监听
*
* 读取方式:
* readAsDataURL(file) 读取地址
* readAsText(file[,encoding]) 读取文本
* readAsBinaryString(file) 以二进制读取
*
* 事件:
* onload 读取完成
* onloadstart 开始读取
* onloadend 结束读取 无论成功与否都会触发
* onerror 错误触发
* onabort 中断读取时触发
*
* abort() 中断读取方法
* */
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。