第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

上傳到互聯(lián)網(wǎng)站點

上傳到互聯(lián)網(wǎng)站點

Go
SMILET 2022-06-27 15:11:21
使用下面的代碼,我可以從互聯(lián)網(wǎng)上下載一個文件,詢問監(jiān)控下載的百分比。如何將文件上傳到互聯(lián)網(wǎng)以及監(jiān)控上傳進(jìn)度。我想在 github assets 上傳可執(zhí)行文件package mainimport (    "fmt"    "io"    "net/http"    "os"    "strings"    "github.com/dustin/go-humanize")// WriteCounter counts the number of bytes written to it. It implements to the io.Writer interface// and we can pass this into io.TeeReader() which will report progress on each write cycle.type WriteCounter struct {    Total uint64}func (wc *WriteCounter) Write(p []byte) (int, error) {    n := len(p)    wc.Total += uint64(n)    wc.PrintProgress()    return n, nil}func (wc WriteCounter) PrintProgress() {    // Clear the line by using a character return to go back to the start and remove    // the remaining characters by filling it with spaces    fmt.Printf("\r%s", strings.Repeat(" ", 35))    // Return again and print current status of download    // We use the humanize package to print the bytes in a meaningful way (e.g. 10 MB)    fmt.Printf("\rDownloading... %s complete", humanize.Bytes(wc.Total))}func main() {    fmt.Println("Download Started")    fileUrl := "https://upload.wikimedia.org/wikipedia/commons/d/d6/Wp-w4-big.jpg"    err := DownloadFile("avatar.jpg", fileUrl)    if err != nil {        panic(err)    }    fmt.Println("Download Finished")}// DownloadFile will download a url to a local file. It's efficient because it will// write as it downloads and not load the whole file into memory. We pass an io.TeeReader// into Copy() to report progress on the download.func DownloadFile(filepath string, url string) error {    // Create the file, but give it a tmp file extension, this means we won't overwrite a    // file until it's downloaded, but we'll remove the tmp extension once downloaded.    out, err := os.Create(filepath + ".tmp")    if err != nil {        return err    }    // Get the data    resp, err := http.Get(url)    if err != nil {        out.Close()        return err    }
查看完整描述

1 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗 獲得超8個贊

我只是修改你的代碼。它適用于我的文件服務(wù)器。


func UploadFile(filepath string, url string) error {


    // Create the file, but give it a tmp file extension, this means we won't overwrite a

    // file until it's downloaded, but we'll remove the tmp extension once downloaded.

    out, err := os.Open(filepath)

    if err != nil {

        return err

    }


    // Create our progress reporter and pass it to be used alongside our writer

    counter := &WriteCounter{}


    // Get the data

    resp, err := http.Post(url, "multipart/form-data", io.TeeReader(out, counter))

    if err != nil {

        out.Close()

        log.Println(err.Error())

        return err

    }

    defer resp.Body.Close()


    // The progress use the same line so print a new line once it's finished downloading

    fmt.Print("\n")


    // Close the file without defer so it can happen before Rename()

    out.Close()


    return nil

}

我只是修改你的代碼。它適用于我的文件服務(wù)器。


func UploadFile(filepath string, url string) error {


    // Create the file, but give it a tmp file extension, this means we won't overwrite a

    // file until it's downloaded, but we'll remove the tmp extension once downloaded.

    out, err := os.Open(filepath)

    if err != nil {

        return err

    }


    // Create our progress reporter and pass it to be used alongside our writer

    counter := &WriteCounter{}


    // Get the data

    resp, err := http.Post(url, "multipart/form-data", io.TeeReader(out, counter))

    if err != nil {

        out.Close()

        log.Println(err.Error())

        return err

    }

    defer resp.Body.Close()


    // The progress use the same line so print a new line once it's finished downloading

    fmt.Print("\n")


    // Close the file without defer so it can happen before Rename()

    out.Close()


    return nil

}


查看完整回答
反對 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號