在 Golang 專案中設定檔上傳大小限制:設定 http.Request 中 FileHeader 類型屬性的 MaxFileSize 欄位。建立檔案上傳處理程序並設定上傳檔案大小限制。解析多部分錶單並提取上傳檔案。將文件保存到磁碟。返回成功回應或錯誤回應(如果檔案大小超出限制)。
如何在Golang 專案中設定檔上傳大小限制
在Golang 專案中,設定上傳大小限制涉及設定MaxFileSize
字段,該字段是http.Request
的FileHeader 類型屬性。以下是如何實現的:
package main import ( "fmt" "log" "net/http" "os" ) func main() { // 设置上传文件大小限制为 10 MB maxFileSize := int64(10 * 1024 * 1024) // 创建文件上传处理程序 http.HandleFunc("/upload", func(w http.ResponseWriter, r *http.Request) { // 检查请求是否是多部分表单 if r.Method == "POST" && r.MultipartForm == nil { http.Error(w, "请求不是多部分表单", http.StatusBadRequest) return } // 解析多部分表单 if err := r.ParseMultipartForm(maxFileSize); err != nil { http.Error(w, fmt.Sprintf("解析表单时出错:%v", err), http.StatusInternalServerError) return } // 提取上传文件 file, fileHeader, err := r.FormFile("file") if err != nil { http.Error(w, fmt.Sprintf("提取文件时出错:%v", err), http.StatusBadRequest) return } defer file.Close() // 将文件保存到磁盘 dst, err := os.Create("uploaded_file") if err != nil { http.Error(w, fmt.Sprintf("保存文件时出错:%v", err), http.StatusInternalServerError) return } defer dst.Close() if _, err = io.Copy(dst, file); err != nil { http.Error(w, fmt.Sprintf("复制文件时出错:%v", err), http.StatusInternalServerError) return } // 返回成功响应 fmt.Fprintf(w, "文件上传成功!") }) // 启动服务器 log.Fatal(http.ListenAndServe(":8080", nil)) }
實戰案例:
使用Postman 或cURL 上傳大於10 MB 的文件,你將收到一個錯誤回應,如下所顯示:
{ "error": "文件大小超出了限制" }
以上是如何在 Golang 專案中設定檔上傳大小限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!