mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/yunionio/cloudpods.git
synced 2026-09-20 08:03:53 +08:00
Merge pull request #16232 from wanyaoqi/automated-cherry-pick-of-#16231-upstream-release-3.10
Automated cherry pick of #16231: fix(host): download sparse file truncate first
This commit is contained in:
@@ -410,6 +410,13 @@ func init() {
|
||||
|
||||
if sparseHeader > 0 {
|
||||
writer = sparsefile.NewSparseFileWriter(fi, sparseHeader, totalSize)
|
||||
fileSize, _ := strconv.ParseInt(resp.Header.Get("X-File-Size"), 10, 64)
|
||||
if fileSize > 0 {
|
||||
err = fi.Truncate(fileSize)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed truncate file")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bar := pb.Full.Start64(totalSize)
|
||||
|
||||
@@ -87,6 +87,7 @@ func (d *SDownloadProvider) Start(
|
||||
reader = fi
|
||||
|
||||
size := stat.Size()
|
||||
d.w.Header().Set("X-File-Size", fmt.Sprintf("%d", size))
|
||||
if d.sparse {
|
||||
sparse, err := sparsefile.NewSparseFileReader(fi)
|
||||
if err != nil {
|
||||
|
||||
@@ -244,6 +244,13 @@ func (r *SRemoteFile) downloadInternal(getData bool, preChksum string, callback
|
||||
|
||||
if sparseHeader > 0 {
|
||||
writer = sparsefile.NewSparseFileWriter(fi, sparseHeader, totalSize)
|
||||
fileSize, _ := strconv.ParseInt(resp.Header.Get("X-File-Size"), 10, 64)
|
||||
if fileSize > 0 {
|
||||
err = fi.Truncate(fileSize)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed truncate file")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pb := pb.NewProxyReader(reader, totalSize)
|
||||
|
||||
Reference in New Issue
Block a user