当前位置:网站首页>Realize the function of data uploading
Realize the function of data uploading
2022-07-02 04:30:00 【L 00】
Realize the function of uploading data
Code ( There's too much code , So I chose some main ):
Back end :
Code 1 :
package admin
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"os"
"path"
"strconv"
"webproject1/models"
)
type UserController struct{
}
func (con UserController) Index(context *gin.Context) {
context.String(200, " I am managing user pages ")
}
func (con UserController) Add(context *gin.Context) {
context.HTML(http.StatusOK, "admin/useradd.html", gin.H{
})
}
func (con UserController) Edit(context *gin.Context) {
context.HTML(200, "admin/useredit.html", gin.H{
})
}
func (con UserController) DoUpload(context *gin.Context) {
username := context.PostForm("username")
file, err := context.FormFile("face1")
if err == nil {
extName := path.Ext(file.Filename)
allowExMap := map[string]bool{
".jpg": true,
".png": true,
".gif": true,
".jpeg": true,
}
_, ok := allowExMap[extName]
if !ok {
context.String(200, " Upload file type error ")
return
}
day := models.GetDay()
dir := "./static/upload/" + day
err := os.MkdirAll(dir, 0666)
if err != nil {
fmt.Println(err)
context.String(200, "MKdirAll Failure ")
return
}
fileName := strconv.FormatInt(models.GetUnix(), 10) + extName
dst := path.Join(dir, fileName)
context.SaveUploadedFile(file, dst)
}
context.JSON(http.StatusOK, gin.H{
"success": true,
"username": username,
})
}
func (con UserController) DoEdit(context *gin.Context) {
context.String(200, " Perform upload ")
username := context.PostForm("username")
face1, err1 := context.FormFile("face1")
dst1 := path.Join("./static/upload", face1.Filename)
if err1 == nil {
context.SaveUploadedFile(face1, dst1)
}
face2, err2 := context.FormFile("face2")
dst2 := path.Join("./static/upload", face2.Filename)
if err2 == nil {
context.SaveUploadedFile(face2, dst2)
}
context.JSON(http.StatusOK, gin.H{
"success": true,
"username": username,
"dst1": dst1,
"dst2": dst2,
})
}
Routing group :
package routers
import (
"github.com/gin-gonic/gin"
"webproject1/controllers/admin"
"webproject1/middlewares"
)
func AdminRoutersInit(eng *gin.Engine) {
adminRouters := eng.Group("/admin", middlewares.InitMiddleware)
{
adminRouters.GET("/", admin.IndexController{
}.Index)
adminRouters.GET("/article", admin.UserController{
}.Index)
adminRouters.GET("/article/add", admin.ArticleController{
}.Add)
adminRouters.GET("/article/edit", admin.ArticleController{
}.Edit)
adminRouters.GET("/user", admin.UserController{
}.Index)
adminRouters.GET("/user/add", admin.UserController{
}.Add)
adminRouters.GET("/user/edit", admin.UserController{
}.Edit)
adminRouters.POST("/user/doUpload", admin.UserController{
}.DoUpload)
adminRouters.POST("/user/doEdit", admin.UserController{
}.DoEdit)
}
}
The front desk :
package qiantai
import (
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
"net/http"
)
type DefaultController struct{
}
func (con DefaultController) Index(context *gin.Context) {
session := sessions.Default(context)
session.Set("username", "z Zhang San 111")
session.Save()
context.SetCookie("username", " Zhang San ", 3600, "/", ".qiantai.com", false, true)
context.HTML(http.StatusOK, "default/index.html", gin.H{
"msg": " I am a msg",
"t": 1629788418,
})
}
func (con DefaultController) News(context *gin.Context) {
session := sessions.Default(context)
username := session.Get("username")
context.String(200, "username=%v", username)
}
func (con DefaultController) Shop(context *gin.Context) {
username, _ := context.Cookie("username")
context.String(200, "cookie="+username)
}
func (con DefaultController) DeleteCookie(context *gin.Context) {
context.SetCookie("username", " Zhang San ", -1, "/", "localhost", false, true)
context.String(200, " Delete successful ")
}
main Code :
package main
import (
"fmt"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
"html/template"
"time"
"webproject1/models"
"webproject1/routers"
)
func initMiddinwareOne(context *gin.Context) {
start := time.Now().UnixNano()
fmt.Println(" Successful implementation 1")
context.Next()
end := time.Now().UnixNano()
fmt.Println(" perform 1")
fmt.Println(end - start)
}
func initMiddlewaretwo(context *gin.Context) {
start := time.Now().UnixNano()
fmt.Println(" Successful implementation 2")
context.Next()
end := time.Now().UnixNano()
fmt.Println(" perform 2")
fmt.Println(end - start)
}
type news struct {
Title string `json :"title"`
}
func main() {
eng := gin.Default()
eng.SetFuncMap(template.FuncMap{
"UnixToTime": models.UnixToTime,
})
eng.LoadHTMLGlob("templates/**/*")
store := cookie.NewStore([]byte("secret111"))
eng.Use(sessions.Sessions("mysession", store))
routers.AdminRoutersInit(eng)
routers.ApiRoutersInit(eng)
routers.DefaultRoutersInit(eng)
eng.Use(initMiddinwareOne)
eng.GET("/middle", func(context *gin.Context) {
time.Sleep(time.Second)
context.String(200, " middleware ")
})
eng.Run(":80")
}
The front-end code ( Simple ), It mainly realizes the function :
{
{
define "admin/useradd.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h2> Upload files </h2>
<form action="/admin/user/doUpload" method="post" enctype="multipart/form-data">
user name <input type="text" name="username" />
<br>
<br>
Head portrait 1:<input type="file" name="face1" />
<br>
<br>
Head portrait 2:<input type="file" name="face2" />
<br>
<br>
<input type="submit" value=" Submit ">
</form>
</body>
</html>
{
{
end}}
result :


Local :
You can find pictures , And the user name was uploaded successfully .
边栏推荐
- Ognl和EL表达式以及内存马的安全研究
- 【毕业季·进击的技术er】年少有梦,何惧彷徨
- Wechat applet - realize the countdown of 60 seconds to obtain the mobile verification code (mobile number + verification code login function)
- Pytoch --- use pytoch for image positioning
- Spring moves are coming. Watch the gods fight
- Recyclerview add header
- Handling of inconsistency between cursor and hinttext position in shutter textfield
- [JS event -- event flow]
- 【提高课】ST表解决区间最值问题【2】
- 第十六周作业
猜你喜欢

UNET deployment based on deepstream

pip 安装第三方库

万卷共知,一书一页总关情,TVP读书会带你突围阅读迷障!

Dare to go out for an interview without learning some distributed technology?

Target free or target specific: a simple and effective zero sample position detection comparative learning method

MySQL error: expression 1 of select list is not in group by claim and contains nonaggre

First acquaintance with P4 language

Pytorch---使用Pytorch进行鸟类的预测

Ognl和EL表达式以及内存马的安全研究

Typescript practice for SAP ui5
随机推荐
Microsoft Research Institute's new book "Fundamentals of data science", 479 Pages pdf
Yyds dry goods inventory kubernetes introduction foundation pod concept and related operations
10 minutes to understand CMS garbage collector in JVM
LxC limits the number of CPUs
MySQL advanced SQL statement 2
The difference between vectorresize and reverse.
二叉树解题(二)
Exposure X8标准版图片后期滤镜PS、LR等软件的插件
Message mechanism -- message processing
Ten thousand volumes are known to all, and one page of a book is always relevant. TVP reading club will take you through the reading puzzle!
June book news | 9 new books are listed, with a strong lineup and eyes closed!
cookie、session、tooken
Introduction to JSON usage scenarios and precautions
Shutdown procedure after 60
Www 2022 | rethinking the knowledge map completion of graph convolution network
First acquaintance with P4 language
Flag bits in assembly language: CF, PF, AF, ZF, SF, TF, if, DF, of
How much is the tuition fee of SCM training class? How long is the study time?
win11安装pytorch-gpu遇到的坑
Learn what definitelytyped is through the typescript development environment of SAP ui5