golang web服务有时候需要提供上传文件的接口,以下就是具体示例。为了示例简单(吐槽下 golang 的错误处理), 忽略了所有的错误处理。本文会用两种方式(标准库和gin)详细讲解 golang 实现文件上传的实现。

gin是一个用 golang 实现的优秀 web 服务框架

上传文件

标准包实现

package main

import (

"io"

"log"

"net/http"

"os"

)

var (

// 文件 key

uploadFileKey = "upload-key"

)

func main() {

http.HandleFunc("/upload", uploadHandler)

if err := http.ListenAndServe(":8080", nil); err != nil {

log.Fatalf("error to start http server:%s", err.Error())

}

}

func uploadHandler(w http.ResponseWriter, r *http.Request) {

// 接受文件

file, header, err := r.FormFile(uploadFileKey)

if err != nil {

// ignore the error handler

}

log.Printf("s