用go gin server来做文件上传服务

 更新时间:2019年04月02日 14:06:56   作者:stpeace  
今天小编就为大家分享一篇关于用go gin server来做文件上传服务,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

之前已经go get安装了gin, 现在来玩下用go gin server作图片上传服务, 代码目录如下:

taoge:~/test_gin$ tree
.
|-- public
|-- template
|  `-- select_file.html
`-- test_gin_server.go
2 directories, 2 files
taoge:~/test_gin$ 

test_gin_server.go内容:

package main
import (
  "fmt"
  "io"
  "log"
  "net/http"
  "os"
  "github.com/gin-gonic/gin"
)
func upload(c *gin.Context) {
  file, header, err := c.Request.FormFile("file") 
  if err != nil {
    c.String(http.StatusBadRequest, fmt.Sprintf("file err : %s", err.Error()))
    return
  }
  filename := header.Filename
  out, err := os.Create("public/" + filename)
  if err != nil {
    log.Fatal(err)
  }
  defer out.Close()
  _, err = io.Copy(out, file)
  if err != nil {
    log.Fatal(err)
  }
  filepath := "http://localhost:8080/file/" + filename
  c.JSON(http.StatusOK, gin.H{"filepath": filepath})
}
func main() {
  router := gin.Default()
  router.LoadHTMLGlob("template/*")
  router.GET("/", func(c *gin.Context) {
    c.HTML(http.StatusOK, "select_file.html", gin.H{})
  })
  router.POST("/upload", upload)
  router.StaticFS("/file", http.Dir("public"))
  router.Run(":8080")
}

select_file.html的内容为:

<html>
<body>
  <form action="http://localhost:8080/upload/" enctype="multipart/form-data" method="POST"> 
    <input type="file" name="file" id="pic" accept="*" />
    <button type="submit">提交</button>
  </form>
</body>
</html>

go run test_gin_server.go跑起来, 在浏览器上执行:http://localhost:8080/ ,然后就出现了图片上传的页面,于是就可以上传图片了, 玩了一下, OK,服务端对应的public目录中有对应的图片。

不多说。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Golang 限流器的使用和实现示例

    Golang 限流器的使用和实现示例

    这篇文章主要介绍了Golang 限流器的使用和实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 详解如何用Golang处理每分钟100万个请求

    详解如何用Golang处理每分钟100万个请求

    在项目开发中,我们常常会遇到处理来自数百万个端点的大量POST请求,本文主要介绍了Golang实现处理每分钟100万个请求的方法,希望对大家有所帮助
    2023-04-04
  • golang 连接mongoDB的方法示例

    golang 连接mongoDB的方法示例

    这篇文章主要介绍了golang 连接mongoDB的方法示例,详细的介绍了golang的基础知识和连接mongoDB的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • golang 后台进程的启动和停止操作

    golang 后台进程的启动和停止操作

    这篇文章主要介绍了golang 后台进程的启动和停止操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Go结合JavaScript实现抓取网页中的图像链接

    Go结合JavaScript实现抓取网页中的图像链接

    这篇文章主要为大家详细介绍了Go语言如何结合JavaScript实现抓取网页中的图像链接,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • golang语言如何将interface转为int, string,slice,struct等类型

    golang语言如何将interface转为int, string,slice,struct等类型

    这篇文章主要介绍了golang语言如何将interface转为int, string,slice,struct等类型,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Go语言深度拷贝工具deepcopy的使用教程

    Go语言深度拷贝工具deepcopy的使用教程

    今天给大家推荐的工具是deepcopy,一个可以对指针、接口、切片、结构体、Map都能进行深拷贝的工具,感兴趣的小伙伴快跟随小编一起学习学习
    2022-09-09
  • 详解Go语言中io/ioutil工具的使用

    详解Go语言中io/ioutil工具的使用

    这篇文章主要为大家详细介绍了Go语言中io/ioutil工具的使用,从而简化文件操作。文中是示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-05-05
  • 关于golang struct 中的 slice 无法原子赋值的问题

    关于golang struct 中的 slice 无法原子赋值的问题

    这篇文章主要介绍了为什么 golang struct 中的 slice 无法原子赋值的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • Goland IDEA项目多开设置方式

    Goland IDEA项目多开设置方式

    这篇文章主要介绍了Goland IDEA项目多开设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论