当前位置:网站首页>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 .
边栏推荐
- Free drawing software recommended - draw io
- 蓝湖的安装及使用
- LeetCode-归并排序链表
- Playing with concurrency: what are the ways of communication between threads?
- What methods should service define?
- Wechat applet map annotation
- 66.qt quick QML Custom Calendar component (supports vertical and horizontal screens)
- 阿里云polkit pkexec 本地提权漏洞
- Markdown edit syntax
- unable to execute xxx. SH: operation not permitted
猜你喜欢

Record the bug of unity 2020.3.31f1 once

Deeply understand the concepts of synchronization and asynchrony, blocking and non blocking, parallel and serial

LeetCode-对链表进行插入排序

pip 安装第三方库

office_ Delete the last page of word (the seemingly blank page)

记录一次Unity 2020.3.31f1的bug

Thinkphp内核工单系统源码商业开源版 多用户+多客服+短信+邮件通知

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

66.qt quick-qml自定义日历组件(支持竖屏和横屏)

unable to execute xxx. SH: operation not permitted
随机推荐
微信小程序 - 实现获取手机验证码倒计时 60 秒(手机号+验证码登录功能)
CY7C68013A之keil编译代码
【c语言】基础篇学习笔记
66.qt quick QML Custom Calendar component (supports vertical and horizontal screens)
Go function
Pytoch --- use pytoch to realize u-net semantic segmentation
【毕业季·进击的技术er】年少有梦,何惧彷徨
Feature Engineering: summary of common feature transformation methods
pip 安装第三方库
Mysql表insert中文变?号的问题解决办法
[improvement class] st table to solve the interval maximum value problem [2]
Fluent icon demo
Target free or target specific: a simple and effective zero sample position detection comparative learning method
Go variables and constants
C language guessing numbers game
How to solve the problem that objects cannot be deleted in Editor Mode
LxC limits the number of CPUs
Force buckle 540 A single element in an ordered array
Document declaration and character encoding
云服务器的安全设置常识