亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
大竹县| 商丘市| 兰坪| 襄垣县| 深水埗区| 盘锦市| 麻栗坡县| 城市| 班戈县| 繁峙县| 鹤山市| 盘山县| 台东县| 阜新市| 梁山县| 綦江县| 麻阳| 松阳县| 剑川县| 武邑县| 鄢陵县| 昌宁县| 高台县| 宝应县| 海安县| 抚州市| 淄博市| 靖江市| 五常市| 榆社县| 靖边县| 广饶县| 利辛县| 资讯| 宣恩县| 海阳市| 尉犁县| 丽江市| 金门县| 喀什市| 锡林郭勒盟|