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日志输出


    最后看下图片生成的目录

  • 相关阅读:
    json.parse 与 json.stringfy
    window.self ->window.top->window.parent
    Matrix探究细谈
    android TypedValue.applyDimension()的探究
    Android判断屏幕锁屏的步骤总结
    Intent和IntentFilter详解
    android中活动的启动模式
    android中的显式与隐式Intent
    android中的Pending.getActivity()参数详解
    android之传感器
  • 原文地址:https://www.cnblogs.com/ExMan/p/12960823.html
Copyright © 2011-2022 走看看