PHP中高级工程师面试重点讲解视频课程
Go快速入门浅显易懂视频教程-基础篇
Go快速入门浅显易懂视频教程-中级篇
go上传附件
阅读:1504 分享次数:0

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)  
    }  
}


------------------------------------------------------------


<!DOCTYPE html>
 <html>
      <head>
      <meta charset="utf-8">
      <title>go 上传test</title>
     </head>
<body>
<form method="POST" action="/upload" enctype="multipart/form-data" >
<input type="file" name="uploadfile" />
<input type="submit" value="上传">
</form>
</body>
</html>

感觉本站内容不错,读后有收获?