diff options
Diffstat (limited to 'pkg/gcs/gcs.go')
| -rw-r--r-- | pkg/gcs/gcs.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/pkg/gcs/gcs.go b/pkg/gcs/gcs.go index 0121d2aeb..97883256a 100644 --- a/pkg/gcs/gcs.go +++ b/pkg/gcs/gcs.go @@ -80,25 +80,35 @@ func (client *Client) Read(gcsFile string) (*File, error) { } func (client *Client) UploadFile(localFile, gcsFile string) error { - bucket, filename, err := split(gcsFile) + local, err := os.Open(localFile) if err != nil { return err } - local, err := os.Open(localFile) + defer local.Close() + + w, err := client.FileWriter(gcsFile) if err != nil { return err } - defer local.Close() - bkt := client.client.Bucket(bucket) - f := bkt.Object(filename) - w := f.NewWriter(client.ctx) defer w.Close() + if _, err := io.Copy(w, local); err != nil { return err } return nil } +func (client *Client) FileWriter(gcsFile string) (io.WriteCloser, error) { + bucket, filename, err := split(gcsFile) + if err != nil { + return nil, err + } + bkt := client.client.Bucket(bucket) + f := bkt.Object(filename) + w := f.NewWriter(client.ctx) + return w, nil +} + func split(file string) (bucket, filename string, err error) { pos := strings.IndexByte(file, '/') if pos == -1 { |
