ファイルをアップロードするときにファイルサイズの制限を実装しようとしています。次のコードは、ファイル(または要求本体ですが、私の目的に十分近い)が1 MBを超えると正しく検出します。しかし、この場合は、カスタムエラーメッセージが表示されたページではなく、「接続がリセットされました」ページが返されます。ファイルが1 MB未満の場合は、「ファイルアップロードOK」というページが正しく表示されます。http.MaxBytesReaderの接続をリセットする
私は、以下のコードで指定した内容を提供するのではなく、サーバーへの接続がリセットされる理由について、いくつかの点をお伝えしたいと思います。
func baseHandler(writer http.ResponseWriter, request *http.Request) {
request.Body = http.MaxBytesReader(writer, request.Body, 1024 * 1024)
_, _, err := request.FormFile("uploadfile")
if err != nil {
fmt.Fprintf(writer, "ERROR: %v", err) // Should be displayed in browser, is not
fmt.Printf("ERROR: %v", err) // Gets written to terminal, so any errors are correctly identified
return
}
fmt.Fprintf(writer, "File upload OK")
}
func main() {
http.HandleFunc("/", baseHandler)
http.ListenAndServe(":8080", nil)
}