zoukankan      html  css  js  c++  java
  • golangWeb框架---github.com/gin-gonic/gin学习二(文件上传、多文件上传)

    文章目录
    上传单个文件(一)
    上传单个文件(二)
    上传多个文件

    关于如何实现Gin框架上传单个文件、多个文件的案例
    上传单个文件(一)
    package main

    import (
    "github.com/gin-gonic/gin"
    "io"
    "log"
    "net/http"
    "os"
    )


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

    router.POST("/upload", getting)
    router.Run()
    }

    func getting(c *gin.Context){
    file, handler, err := c.Request.FormFile("file")
    filename := handler.Filename
    log.Println("Received file:", handler.Filename)
    out, err := os.Create(filename)
    if err != nil {
    log.Fatal(err)
    }
    defer out.Close()
    _, err = io.Copy(out, file)
    if err != nil {
    log.Fatal(err)
    }
    c.String(http.StatusOK, "Uploaded...")
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    我们通过

    $ curl -X POST http://localhost:8080/upload -F “file=@/Users/zhiliao/Desktop/23sdfsdfs_wew.png” -H “Content-Type: multipart/form-data”

    如下命令就可以实现文件的上传(图片目录是我本机上的一张图片)

    效果图如下:


    上传单个文件(二)
    我们还可以利用如下的方法

    package main

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

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

    router.POST("/upload", getting)
    router.Run()
    }


    func getting(c *gin.Context){
    file, _ := c.FormFile("file")
    log.Println(file.Filename)
    //这里省略了其他操作
    // Upload the file to specific dst.
    // c.SaveUploadedFile(file, dst)
    c.String(http.StatusOK, "Uploaded...")
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    同样执行上述的CURL命令,后台即可成功收到成功日志输出,但是代码里面我只是列出了文件名字,对应文件的输出操作就暂时省去了,后续专门开一篇来介绍文件操作的方方面面


    最后看生成的文件


    上传多个文件
    我们还可以实现批量文件上传

    package main

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

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

    router.POST("/upload", getting)
    router.Run()
    }

    func getting(c *gin.Context){

    form, _ := c.MultipartForm()
    files := form.File["upload[]"]

    for _, file := range files {
    log.Println(file.Filename)
    c.SaveUploadedFile(file,file.Filename)
    }
    c.String(http.StatusOK, "Uploaded...")


    }


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    然后我们执行如下操作
    curl -X POST http://localhost:8080/upload -F “upload[]=@/Users/zhiliao/Desktop/23sdfsdfs_wew.png” -F “upload[]=@/Users/zhiliao/Desktop/WX20180903-103357.png” -H “Content-Type: multipart/form-data”

    就可以看到log日志输出


    最后看下图片生成的目录

  • 相关阅读:
    Could A New Linux Base For Tablets/Smartphones Succeed In 2017?
    使用libhybris,glibc和bionic共存时的TLS冲突的问题
    6 Open Source Mobile OS Alternatives To Android in 2018
    Using MultiROM
    GPU drivers are written by the GPU IP vendors and they only provide Android drivers
    Jolla Brings Wayland Atop Android GPU Drivers
    How to Use Libhybris and Android GPU Libraries with Mer (Linux) on the Cubieboard
    闲聊Libhybris
    【ARM-Linux开发】wayland和weston的介绍
    Wayland and X.org problem : Why not following the Android Solution ?
  • 原文地址:https://www.cnblogs.com/ExMan/p/12960823.html
Copyright © 2011-2022 走看看