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.交流群: 2702237 13835667

相關課文
  • GO語言GORM如何更新字段

  • gorm如何創建記錄與模型定義需要注意什麽

  • gorm一般查詢與高級查詢

  • GORM時間戳跟蹤及CURD(增刪改查)

我要說說
網上賓友點評