登录
首页 >  Golang >  Go问答

net/http:HTTP/1.x 传输连接中断:http:ContentLength=2514,正文长度为 0

来源:stackoverflow

时间:2024-04-05 15:18:30 492浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《net/http:HTTP/1.x 传输连接中断:http:ContentLength=2514,正文长度为 0》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我正在尝试将 nodejs 应用程序转换为 go。这里我尝试将文件上传到b2。但我收到 post "https://pod-xx.backblaze.com/b2api/v2/b2_upload_file/wertgvwgte/cseref": net/http: http/1.x 传输连接中断: http: contentlength=3312 with body长度 0 。这是我的代码:

// open file
    file, err := os.open(location)
    if err != nil {
        log.fatal(err)
        return "", err
    }
    defer file.close()

    // create sha1 hash of file
    hash := sha1.new()
    if _, err := io.copy(hash, file); err != nil {
        log.fatal(err)
        return "", err
    }
    sha1sum := hex.encodetostring(hash.sum(nil))



    // http client
    client := http.client{}
    req, _ := http.newrequest("post", b2.uploadurl, file)
    contentlength, _ := file.stat()
    
    req.contentlength = contentlength.size()  // without this, its throwing map[code:bad_request message:missing header: content-length status:400]
    req.header.set("content-type", "application/octet-stream")
    req.header.set("authorization", b2.authorizationtoken)
    req.header.set("x-bz-file-name", name)
    req.header.set("x-bz-content-sha1", sha1sum)

    res , errr := client.do(req)
    if errr != nil {
        log.fatalln(errr)
        return "", errr
    }

这里是完美运行的nodejs代码,仅供参考:

const file = await fs.readFile(location);
    const sha1 = crypto.createHash('sha1').update(file).digest("hex");
    const config = {
        headers: {
            'Authorization': auth_token,
            'X-Bz-File-Name': final_name,
            'Content-Type': 'b2/x-auto',
            'X-Bz-Content-Sha1': sha1
        }
    };
    let response = await axios.post(upload_url, file, config);
    return response.data['fileId'];

正确答案


您已在此处使用文件:

if _, err := io.Copy(hash, file); err != nil {
        log.Fatal(err)
        return "", err
    }

使用func (*File) Seek或将文件加载到内存。

到这里,我们也就讲完了《net/http:HTTP/1.x 传输连接中断:http:ContentLength=2514,正文长度为 0》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>