亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang io.copy 不復制整個數據

Golang io.copy 不復制整個數據

Go
慕田峪4524236 2022-08-30 21:47:09
我有一個小代碼,從谷歌云存儲讀取100 MB文件,然后返回輸出。代碼對于 1MB 文件工作正常,但對于 100 MB 文件失敗。下面是不起作用的代碼rc, err := client.Bucket("mabucket").Object(gcpurl).NewReader(ctx)    if err != nil {        fmt.Println(err)        return    }    defer rc.Close()    w.Header().Set("Content-Length", strconv.Itoa(int(rc.Size())))    w.Header().Set("Cache-Control", "max-age=2592000")    w.Header().Set("Content-Type", rc.ContentType())    spew.Dump(rc.ContentType())    if rc.ContentType() == "audio/wav" || rc.ContentType() == "audio/wave" {        w.Header().Set("Accept-Ranges", "bytes")        tilrange := rc.Size() - 1        newRangeString := "bytes 0-" + strconv.Itoa(int(tilrange)) + "/" + strconv.Itoa(int(rc.Size()))        w.Header().Set("Content-Range", newRangeString)        w.WriteHeader(206)    }    //spew.Dump(rc.Attrs)    io.Copy(w, rc)我寫了另一個代碼,能夠下載相同的文件并創建一個100 mb的本地文件。這次我使用的是ioutil。全部閱讀。從 GCP 接收大日期時,io.copy 會有什么問題?func main() {    ctx := context.Background()    client, _ := storage.NewClient(ctx)        data, err := downloadFile(client, "mabucket", "606ff2b71a916907409a953f/606ff2ed1a916907409a9540/60a38a967b291f7b44488824/123/audio/210415164000M29713363.wav")    //210415164000M29713363.wav    if err != nil {        log.Fatalf("Cannot read object: %v", err)    }    fmt.Printf("Object contents: %d\n", len(data))    f, err := os.Create("a.wav")    check(err)    defer f.Close()    n2, err := f.Write(data)    check(err)    fmt.Printf("wrote %d bytes\n", n2)}// downloadFile downloads an object.func downloadFile(client *storage.Client, bucket, object string) ([]byte, error) {    // [START download_file]    ctx := context.Background()    ctx, cancel := context.WithTimeout(ctx, time.Second*50)    defer cancel()    rc, err := client.Bucket(bucket).Object(object).NewReader(ctx)    if err != nil {        return nil, err    }    defer rc.Close()    data, err := ioutil.ReadAll(rc)    if err != nil {        return nil, err    }    return data, nil    // [END download_file]}
查看完整描述

1 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

io.copy試圖復制詳細信息,但操作系統不允許這樣做。它拋出錯誤為(*net。OpError)(0xc0003302d0)(寫 tcp [::1]:80->[::1]:63014: wsasend: 已建立的連接被主機中的軟件中止


查看完整回答
反對 回復 2022-08-30
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號