相关疑难解决方法(0)

Golang文件上传:如果文件太大,则关闭连接

我想允许上传文件.Go正在使用服务器端来处理请求.我想在他们尝试上传的文件太大时发送"文件太大"的响应.我想上传整个文件(带宽)之前这样做.

我正在使用以下代码段,但它只是在客户端上传后才发送响应.它保存了5 kB文件.

const MaxFileSize = 5 * 1024
// This feels like a bad hack...
if r.ContentLength > MaxFileSize {
    if flusher, ok := w.(http.Flusher); ok {
        response := []byte("Request too large")
        w.Header().Set("Connection", "close")
        w.Header().Set("Content-Length", fmt.Sprintf("%d", len(response)))
        w.WriteHeader(http.StatusExpectationFailed)
        w.Write(response)
        flusher.Flush()
    }
    conn, _, _ :=  w.(http.Hijacker).Hijack()
    conn.Close()
    return
}

r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize)

err := r.ParseMultipartForm(1024)
if err != nil {
    w.Write([]byte("File too large"));
    return
}

file, header, err := r.FormFile("file")
if err != …
Run Code Online (Sandbox Code Playgroud)

upload http go

9
推荐指数
1
解决办法
5261
查看次数

golang - 上传大文件的函数

在 go 中,有不同的方法来读取以多部分形式发送的文件

r.FormFile("file")

r.MultipartReader()

r.ParseMultipartForm(size)

我部分理解它们之间的区别,但是哪一个最适合处理大文件(~1GB)?

而且,哪一个使用的内存更少?

forms upload go

0
推荐指数
1
解决办法
6895
查看次数

标签 统计

go ×2

upload ×2

forms ×1

http ×1