diff options
author | Jesse Hallam <jesse.hallam@gmail.com> | 2018-05-10 18:16:33 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2018-05-10 15:16:33 -0700 |
commit | 2b27e12445ba51e1fa1ab2aceac5fcb3de66845d (patch) | |
tree | 3d3bf61a39534e8db4cffde9b9644c3ce895580c /utils/file_backend_s3.go | |
parent | 7fa1c6c4bae19d1647d759198126ee4591282079 (diff) | |
download | chat-2b27e12445ba51e1fa1ab2aceac5fcb3de66845d.tar.gz chat-2b27e12445ba51e1fa1ab2aceac5fcb3de66845d.tar.bz2 chat-2b27e12445ba51e1fa1ab2aceac5fcb3de66845d.zip |
MM-10188: expect io.Reader in FileBackend.WriteFile (#8765)
This is a reworked set of changes originally from @josephGuo to begin
reducing the duplicated memory required when uploading files.
Diffstat (limited to 'utils/file_backend_s3.go')
-rw-r--r-- | utils/file_backend_s3.go | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/utils/file_backend_s3.go b/utils/file_backend_s3.go index 87ed3dd16..1772f09ea 100644 --- a/utils/file_backend_s3.go +++ b/utils/file_backend_s3.go @@ -4,7 +4,7 @@ package utils import ( - "bytes" + "io" "io/ioutil" "net/http" "os" @@ -136,10 +136,10 @@ func (b *S3FileBackend) MoveFile(oldPath, newPath string) *model.AppError { return nil } -func (b *S3FileBackend) WriteFile(f []byte, path string) *model.AppError { +func (b *S3FileBackend) WriteFile(fr io.Reader, path string) (int64, *model.AppError) { s3Clnt, err := b.s3New() if err != nil { - return model.NewAppError("WriteFile", "api.file.write_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError) + return 0, model.NewAppError("WriteFile", "api.file.write_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError) } var contentType string @@ -150,12 +150,12 @@ func (b *S3FileBackend) WriteFile(f []byte, path string) *model.AppError { } options := s3PutOptions(b.encrypt, contentType) - - if _, err = s3Clnt.PutObject(b.bucket, path, bytes.NewReader(f), -1, options); err != nil { - return model.NewAppError("WriteFile", "api.file.write_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError) + written, err := s3Clnt.PutObject(b.bucket, path, fr, -1, options) + if err != nil { + return written, model.NewAppError("WriteFile", "api.file.write_file.s3.app_error", nil, err.Error(), http.StatusInternalServerError) } - return nil + return written, nil } func (b *S3FileBackend) RemoveFile(path string) *model.AppError { |