go语言基础之上传附件

字号+ 编辑: IT男在阿里 修订: SyncLWT 来源: 利志分享 2023-09-12 我要说两句(0)

用代码实例, 说明如何用go实现上传。

package main

import (  
    "fmt"  
    "html/template"  
    "io"  
    "log"  
    "net/http"  
    "os"  
)

//上传方法
func upload(w http.ResponseWriter, r *http.Request) {  
    //这里是get请求  
    if r.Method == "GET" {  
        t, _ := template.ParseFiles("upload.html")  
        t.Execute(w, nil)  
    } else if r.Method == "POST" {  
        // 服务端调用r.ParseMultipartForm,把上传的文件存储在内存和临时文件中 32 << 20 是一个很大的值:33554432  
        r.ParseMultipartForm(32 << 20)  
        //这里获取表单的uploadfile  
        file, handler, err := r.FormFile("uploadfile")  
        if err != nil {  
            fmt.Println(err)  
            return  
        }  
        defer file.Close()  
        //这里打开文件buffer  
        f, err := os.OpenFile("./upload/"+handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)  
        if err != nil {  
            fmt.Println(err)  
            return  
        }  
        defer f.Close()  
        //把文件cp到指定目录下。  
        io.Copy(f, file)  

        fmt.Fprintf(w, "%v", handler.Header)  
        fmt.Fprintf(w, "上传成功")  
    } else {  
        fmt.Println("error")  
    }
}

func main() {  
    http.HandleFunc("/upload", upload)  
    err := http.ListenAndServe(":8081", nil)  
    if err != nil {  
        log.Fatal("ListenAndServe:", err)  
    }  
}
<form method="POST" action="/upload" enctype="multipart/form-data">
    <input type="file" name="uploadfile" />
    <input type="submit" value="上传" />
</form>

                       

阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.Q群: 2702237 13835667

相关课文
  • GO语言GORM如何更新字段

  • gorm如何创建记录与模型定义需要注意什么

  • gorm一般查询与高级查询

  • GORM时间戳跟踪及CURD(增删改查)

我要说说
网上嘉宾点评