所有人.

我正在try 从Web服务器下载文件部分,并将其合并为单个文件. 我是这样做的:

out, err := os.Create(fileInfo.FileInfo.FileName)
    if err != nil {
        panic(err)
    }
    for _, hash := range fileInfo.FileInfo.FileBlocks {
        keeper := getKeeperByHash(hash.Hash, fileInfo.HasHash)
        log.Println("Downloading", hash.Hash)
        downloadURL := &url.URL{
            Scheme: "http",
            Host:   fmt.Sprintf("%s:%d", keeper.Ip, keeper.Port),
            Path:   "file/get",
        }
        param := url.Values{}
        param.Add("hash", hash.Hash)
        downloadURL.RawQuery = param.Encode()
        resp, err := http.Get(downloadURL.String())
        n, err := io.Copy(out, resp.Body)
        log.Println(n)
        if err != nil {
            panic(err)
        }
        resp.Body.Close()
    }
    out.Close()
    hash1, _ := GetFileHashAlt(fileInfo.FileInfo.FileName)
    if hash1 != fileInfo.FileInfo.FileHash {
        log.Println(hash1)
        log.Println(fileInfo.FileInfo.FileHash)

        panic("HASH NOT THE SAME")
    }
    log.Println(hash1)
    log.Println(fileInfo.FileInfo.FileHash)

但对于二进制文件,哈希值不同,文件被 destruct .对于文本文件,一切正常. 问题可能出在哪里? 当我上传和拆分文件时,我一直在判断哈希,而且总是一样的.

我先试着在下载后拆分文件,然后他们将其合并为一个文件,但问题仍然存在.

推荐答案

问题出在服务器端.Fastify框架正在更改文件部分内容.将其替换为Express JS解决了问题.

Go相关问答推荐

Go -SDP服务器读缓冲区不会更改任何内容

正在使用terratest执行terraform脚本测试,但遇到错误退出状态1

转到http服务器头内容-类型设置为多部分/表单-数据,但在客户端获取内容-类型:文本/纯文本

Hugo错误:没有为此项目配置现有内容目录

重新赋值变量时未清除动态类型-这是错误吗?

无法获取RPC描述符

GORM:一个表的两个外键

显示GUI时后台处理功能

Go Template if 条件

GoLang:net.LookupHost 返回重复的 ips

Go 中如何调用测试函数?

转换朴素递归硬币问题时的记忆错误

切片到数组指针的转换

Go:等待多个通道的性能损失

vs 代码调试 go 测试不通过标志

如何在 Windows 上使用 cgo 为 386 arch 构建 lib?

GRPC 反向代理混淆 GRPC 和 GRPC-Web

使用 xml.Name 将 xml 解组为 [] struct

使用不安全的指针从 [] 字符串中获取值

(如何)我可以基于接口抽象地实现Stringer吗?