前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gin框架之静态资源服务

gin框架之静态资源服务

作者头像
大话swift
发布2020-03-26 17:12:13
6.8K0
发布2020-03-26 17:12:13
举报
文章被收录于专栏:大话swift大话swift
我们在网站开发的过程中,需要提供静态资源,例如:上传的文件,css,js。那么gin是如何做的呢?

结构讲解

  1. static下面放静态文件,凡是以“/static”开头的文件都会到这个文件夹下面加载,而且是动态加载的,只要放进来就可以通过HTTP服务访问。例如:/static/css/index.css
  2. upload是我规划的,用于加载用户上传文件,凡是以“/upload”开头的文件都会到这个文件夹下面加载,而且是动态加载的,只要放进来就可以通过HTTP服务访问。例如:/upload/2377654-3266b552b19aeb26.png(2377654-3266b552b19aeb26.png为上传上来的文件)。
  3. favicon.ico。谷歌浏览器会默认加载这个文件,作为浏览器上方显示的小图标。

后端代码

代码语言:javascript
复制
package main


import (
  "fmt"
  "github.com/gin-gonic/gin"
  "net/http"
)


func main() {
  router := gin.Default()
  router.LoadHTMLFiles("./view/index.html", "./view/upload.html")
  //加载静态资源,例如网页的css、js
  router.Static("/static", "./static")


  //加载静态资源,一般是上传的资源,例如用户上传的图片
  router.StaticFS("/upload", http.Dir("upload"))


  //加载单个静态文件
  router.StaticFile("/favicon.ico", "./static/favicon.ico")
  router.GET("/", func(context *gin.Context) {
    context.HTML(http.StatusOK, "index.html", nil)
  })
  router.POST("/upload", func(context *gin.Context) {
    file, _ := context.FormFile("file")
    // 上传文件至指定目录
    if err := context.SaveUploadedFile(file, "./upload/"+file.Filename); err != nil {
      fmt.Println(err)
    }
    context.HTML(http.StatusOK, "upload.html", gin.H{"file": "/upload/" + file.Filename})
  })
  router.Run(":8080")
}

文件上传页面

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <link href="/static/css/index.css" rel="stylesheet">
</head>
<body>
<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit">
</form>
</body>
</html>

图片展示页面

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="{{.file}}">
</body>
</html>

上传成功后,图片的访问地址http://127.0.0.1:8080/upload/2377654-3266b552b19aeb26.png

链接:https://pan.baidu.com/s/10fVlywK77D5Pgr0bjuQVjg

提取码:ssol

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档