zoukankan      html  css  js  c++  java
  • 文件下载和进度显示

    package main
    
    import (
    	"fmt"
    	"io"
    	"net/http"
    	"os"
    )
    
    func downloadFile(url, filename string) {
    	r, err := http.Get(url)
    	if err != nil {
    		panic(err)
    	}
    	defer func() {_ = r.Body.Close()}()
    
    	f, err := os.Create(filename)
    	if err != nil {
    		panic(err)
    	}
    	defer func() {_ = f.Close()}()
    
    	n, err := io.Copy(f, r.Body)
    	fmt.Println(n, err)
    }
    
    type Reader struct {
    	io.Reader
    	Total int64
    	Current int64
    }
    
    func (r *Reader) Read(p []byte) (n int, err error){
    	n, err = r.Reader.Read(p)
    
    	r.Current += int64(n)
    	fmt.Printf("
    进度 %.2f%%", float64(r.Current * 10000/ r.Total)/100)
    
    	return
    }
    
    func DownloadFileProgress(url, filename string) {
    	r, err := http.Get(url)
    	if err != nil {
    		panic(err)
    	}
    	defer func() {_ = r.Body.Close()}()
    
    	f, err := os.Create(filename)
    	if err != nil {
    		panic(err)
    	}
    	defer func() {_ = f.Close()}()
    
    	reader := &Reader{
    		Reader: r.Body,
    		Total: r.ContentLength,
    	}
    
    	_, _ = io.Copy(f, reader)
    
    }
    
    func main() {
    	// 自动文件下载,比如自动下载图片、压缩包
    	url := "https://user-gold-cdn.xitu.io/2019/6/30/16ba8cb6465a6418?w=826&h=782&f=png&s=279620"
    	filename := "poloxue.png"
    	DownloadFileProgress(url, filename)
    }
    

     

  • 相关阅读:
    rs485
    RS-232
    Delphi CRC算法, 不错
    Delphi Modbus RTU CRC16校验码
    如何使用Delphi编写Modbus RTU CRC16的校验码
    Delphi CRC算法crcexecute
    Delphi CRC32Verify控件
    Delphi CRC16校验算法实现(转)
    delphi crc校验函数
    JavaScript如何一次性展示几万条数据
  • 原文地址:https://www.cnblogs.com/yzg-14/p/13277159.html
Copyright © 2011-2022 走看看