go 通过HTTP请求传输大文件的读取

对于上百兆的文件读取,应采取分片读取的方式,代码如下:

//GO 发送http请求:
    resp,err := http.post(URL, "application/json", bytes.NewReader(buf))
    if err!=nil{
        fmt.Println("err",err)
    }


//分片读取resp.Body中的大文件
func readBodyFile(resp *http.Response) ([]byte, error) {
	buf := make([]byte, 1024)
	var result string
	for {
		n, err := resp.Body.Read(buf)
		if err != nil || n == 0 {
			fmt.Println("出现错误")
			break
		}
		result += string(buf[:n])
	}
	return []byte(result), err
}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Golang中,可以通过使用`net/http`包来读取前端传输文件内容。 首先,服务端需要设置一个HTTP路由处理函数来接收前端传输文件。这可以通过使用`http.HandleFunc()`函数来实现。在路由处理函数中,可以使用`request.ParseMultipartForm()`函数来解析前端发送的multipart/form-data类型的表单数据。 示例代码如下所示: ```go package main import ( "net/http" "fmt" ) func fileHandler(w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(32 << 20) // 设置最大文件大小为32MB if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } file, _, err := r.FormFile("file") // 获取文件内容 if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer file.Close() // 处理文件内容,例如保存至本地或上传至云端 // ... fmt.Fprint(w, "文件上传成功") } func main() { http.HandleFunc("/upload", fileHandler) http.ListenAndServe(":8080", nil) } ``` 在上述代码中,`fileHandler`函数用于处理前端传输文件数据。通过调用`r.FormFile("file")`可以获取到文件的内容。接下来,你可以根据具体的需求对文件内容进行处理,例如保存至本地或上传至云端。 最后,通过调用`http.HandleFunc()`函数设置服务器的路由处理函数,并使用`http.ListenAndServe()`函数监听指定的端口,等待客户端的请求。 这样,当前端向服务端发送文件内容时,服务端可以通过上述代码读取并处理文件内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值