Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
ppt_server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Li Feifei
ppt_server
Commits
a50fe6ab
Commit
a50fe6ab
authored
Jul 29, 2021
by
Li Feifei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debug
parent
59dc54a3
Pipeline
#15713
failed with stages
in 7 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
18 deletions
+8
-18
http_client.go
library/http/http_client.go
+8
-18
No files found.
library/http/http_client.go
View file @
a50fe6ab
...
...
@@ -9,6 +9,8 @@ import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/dustin/go-humanize"
"github.com/gogf/gf/util/gconv"
)
func
Get
(
url
string
)
([]
byte
,
error
)
{
...
...
@@ -25,6 +27,7 @@ func handle(response *ghttp.ClientResponse, err error) ([]byte, error) {
type
WriteCounter
struct
{
Total
uint64
Length
uint64
}
func
(
wc
*
WriteCounter
)
Write
(
p
[]
byte
)
(
int
,
error
)
{
...
...
@@ -41,25 +44,11 @@ func (wc WriteCounter) PrintProgress() {
// 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
(
"
\r
Downloading... %s complete"
,
wc
.
formatFileSize
(
wc
.
Total
))
fmt
.
Printf
(
"
\r
Downloading... %s %s complete"
,
fmt
.
Sprintf
(
"%.2f"
,
gconv
.
Float64
(
wc
.
Total
)
/
gconv
.
Float64
(
wc
.
Length
))
+
"%"
,
humanize
.
Bytes
(
wc
.
Total
))
}
func
(
wc
WriteCounter
)
formatFileSize
(
fileSize
uint64
)
string
{
if
fileSize
<
1024
{
//return strconv.FormatInt(fileSize, 10) + "B"
return
fmt
.
Sprintf
(
"%.2fB"
,
float64
(
fileSize
)
/
float64
(
1
))
}
else
if
fileSize
<
(
1024
*
1024
)
{
return
fmt
.
Sprintf
(
"%.2fKB"
,
float64
(
fileSize
)
/
float64
(
1024
))
}
else
if
fileSize
<
(
1024
*
1024
*
1024
)
{
return
fmt
.
Sprintf
(
"%.2fMB"
,
float64
(
fileSize
)
/
float64
(
1024
*
1024
))
}
else
if
fileSize
<
(
1024
*
1024
*
1024
*
1024
)
{
return
fmt
.
Sprintf
(
"%.2fGB"
,
float64
(
fileSize
)
/
float64
(
1024
*
1024
*
1024
))
}
else
if
fileSize
<
(
1024
*
1024
*
1024
*
1024
*
1024
)
{
return
fmt
.
Sprintf
(
"%.2fTB"
,
float64
(
fileSize
)
/
float64
(
1024
*
1024
*
1024
*
1024
))
}
else
{
//if fileSize < (1024 * 1024 * 1024 * 1024 * 1024 * 1024)
return
fmt
.
Sprintf
(
"%.2fEB"
,
float64
(
fileSize
)
/
float64
(
1024
*
1024
*
1024
*
1024
*
1024
))
}
}
// 下载文件
func
Download
(
file
string
,
path
string
)
error
{
...
...
@@ -78,10 +67,11 @@ func Download(file string, path string) error {
}
defer
out
.
Close
()
// 然后将响应流和文件流对接起来
counter
:=
&
WriteCounter
{}
counter
:=
&
WriteCounter
{
Length
:
gconv
.
Uint64
(
resp
.
Header
.
Get
(
"Content-Length"
))
}
_
,
err
=
io
.
Copy
(
out
,
io
.
TeeReader
(
resp
.
Body
,
counter
))
if
err
!=
nil
&&
err
==
io
.
EOF
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment