中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

golang大文件上傳怎么實現

小億
193
2023-10-26 04:26:14
欄目: 編程語言

在Go語言中,可以使用net/http包來實現大文件上傳。下面是一個簡單的示例:

package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func uploadFile(w http.ResponseWriter, r *http.Request) {
	// 限制最大上傳文件大小
	r.ParseMultipartForm(32 << 20) // 32MB

	file, handler, err := r.FormFile("file")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer file.Close()

	// 創建一個新文件用于保存上傳的文件
	f, err := os.OpenFile(handler.Filename, os.O_WRONLY|os.O_CREATE, 0666)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer f.Close()

	// 將上傳的文件內容復制到新文件中
	io.Copy(f, file)

	fmt.Fprintf(w, "上傳成功")
}

func main() {
	http.HandleFunc("/upload", uploadFile)
	http.ListenAndServe(":8000", nil)
}

上述代碼創建了一個HTTP服務器,監聽在localhost:8000上。當客戶端發送一個POST請求到/upload路徑時,服務器將接收到的文件保存到本地。

在客戶端發送請求時,需要將要上傳的文件作為multipart/form-data類型的請求體中的一個字段進行傳遞,字段的名稱為file。可以使用curl命令進行測試:

$ curl -F "file=@/path/to/file" http://localhost:8000/upload

以上示例中,上傳的文件將被保存在當前目錄下,文件名與原文件名相同。

需要注意的是,上述示例沒有實現上傳進度的監控,如果需要監控上傳進度,可以使用第三方庫,如github.com/cheggaaa/pb

0
普兰县| 张家口市| 齐齐哈尔市| 汤原县| 蓬莱市| 申扎县| 慈利县| 双江| 南安市| 马关县| 巴马| 汶上县| 罗山县| 高碑店市| 会泽县| 陆丰市| 旅游| 绩溪县| 甘肃省| 资源县| 吐鲁番市| 亚东县| 朝阳区| 休宁县| 筠连县| 安徽省| 南城县| 蓬溪县| 民权县| 信宜市| 托里县| 乌恰县| 张掖市| 博白县| 玉林市| 延吉市| 苏州市| 久治县| 邵阳县| 孝义市| 兴安县|