From 2361ac8f1776108f40fc8986191542b7ca6801e8 Mon Sep 17 00:00:00 2001 From: celogeek Date: Sat, 5 Mar 2022 17:21:18 +0100 Subject: [PATCH] optimize --- cmd/photos-api-cli/upload.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/cmd/photos-api-cli/upload.go b/cmd/photos-api-cli/upload.go index 0123e24..4430cf9 100644 --- a/cmd/photos-api-cli/upload.go +++ b/cmd/photos-api-cli/upload.go @@ -50,15 +50,20 @@ func (c *UploadCommand) Execute(args []string) error { if err != nil { return err } + chunkSize := int64(1 << 20) + nbChunks := st.Size() / chunkSize + if st.Size()%chunkSize > 0 { + nbChunks++ + } - uploadFile := &UploadFileRequest{Name: filepath.Base(c.File)} + uploadFile := &UploadFileRequest{Name: filepath.Base(c.File), Chunks: make([]string, nbChunks)} progress := progressbar.DefaultBytes(st.Size(), fmt.Sprintf("Uploading %s", uploadFile.Name)) defer progress.Close() cli := resty.New().SetBaseURL(c.Url).SetAuthScheme("Private").SetAuthToken(c.Token) - b := make([]byte, 1<<20) + b := make([]byte, chunkSize) checksum := sha1.New() - for { + for i := 0; ; i++ { n, err := f.Read(b) if n == 0 { if err == io.EOF { @@ -77,7 +82,7 @@ func (c *UploadCommand) Execute(args []string) error { } if result, ok := resp.Result().(*UploadChunkSuccess); ok { - uploadFile.Chunks = append(uploadFile.Chunks, result.Checksum) + uploadFile.Chunks[i] = result.Checksum checksum.Write(b[0:n]) progress.Add(n) }