Go Web——Gin实现文件上传

文章目录

  • 单个文件上传
    • 创建html文件
    • 后端gin框架代码
    • 文件上传实现
  • 多个文件上传
    • 创建html文件
    • 后端gin框架代码
    • 文件上传实现


单个文件上传

创建html文件

templates\upload.html:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传title>
head>
<body>
    
    <form action="/upload" method="post" enctype="multipart/form-data">
        
        请选择要上传的文件:<input type="file" name="file">
        
        <br>

        <input type="submit" value="上传">
    
    form>

body>
html>

后端gin框架代码

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
)

func GoUpload(c *gin.Context) {
	c.HTML(200, "upload.html", nil)
}

func Upload(c *gin.Context) {
	//从请求中读取文件
	f, err := c.FormFile("file")

	if err != nil {
		c.JSON(http.StatusBadRequest, gin.H{
			"error": err.Error(),
		})
	} else {
		log.Println(f.Filename)

		// 将读取到的文件保存到项目的根目录,使用原文件名
		c.SaveUploadedFile(f, f.Filename)

		c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded !", f.Filename))

		c.JSON(http.StatusOK, gin.H{
			"status": "ok",
		})
	}

}

func main() {
	e := gin.Default()

	e.LoadHTMLGlob("templates/*")

	e.GET("/upload", GoUpload)
	e.POST("/upload", Upload)

	e.Run()
}

文件上传实现

浏览器输入:http://localhost:8080/upload

页面显示:

Go Web——Gin实现文件上传_第1张图片

选择要上传的文件并点击上传后:

Go Web——Gin实现文件上传_第2张图片

查看后端响应:

在这里插入图片描述

这样文件就保存至项目根目录下了。

多个文件上传

创建html文件

templates\upload.html:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传title>
head>
<body>
    
    <form action="/upload" method="post" enctype="multipart/form-data">
        
        请选择要上传的文件:<input type="file" name="file"><br>
        <input type="file" name="file"><br>
        <input type="file" name="file"><br>
        
        <br>

        <input type="submit" value="上传">
    
    form>

body>
html>

后端gin框架代码

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
)

func GoUpload(c *gin.Context) {
	c.HTML(200, "upload.html", nil)
}

func UploadMany(c *gin.Context) {
	// Multipart form
	form, _ := c.MultipartForm()
	files := form.File["file"]

	for _, file := range files {
		log.Println(file.Filename)

		dst := fmt.Sprintf("E:/golang开发学习/go_pro/%s", file.Filename)
		// 上传文件到指定的目录
		c.SaveUploadedFile(file, dst)

	}
	c.JSON(http.StatusOK, gin.H{
		"message": fmt.Sprintf("%d files uploaded!", len(files)),
	})
}

func main() {
	e := gin.Default()

	// 处理multipart forms提交文件时默认的内存限制是32 MiB
	// 可以通过下面的方式修改
	// router.MaxMultipartMemory = 8 << 20  // 8 MiB

	e.LoadHTMLGlob("templates/*")

	e.GET("/upload", GoUpload)
	e.POST("/upload", UploadMany)

	e.Run()
}

文件上传实现

浏览器输入:http://localhost:8080/upload

页面显示:

Go Web——Gin实现文件上传_第3张图片

选择要上传的文件并点击上传后:

Go Web——Gin实现文件上传_第4张图片

查看后端响应:

在这里插入图片描述

这样文件就保存至指定目录下了。

你可能感兴趣的:(Go,Web,Gin,前端,golang,gin)