go实现http服务器的附件上传功能实例

服务器代码

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

php、go编程学习实例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值