diff --git a/go/operation/submit.go b/go/operation/submit.go index b157fc052..e0001e60b 100644 --- a/go/operation/submit.go +++ b/go/operation/submit.go @@ -11,11 +11,11 @@ import ( ) type FilePart struct { - ReadCloser io.ReadCloser //required, all rest are optional - FileName string - IsGzipped bool - MimeType string - ModTime int64 //in seconds + Reader io.Reader //required, all rest are optional + FileName string + IsGzipped bool + MimeType string + ModTime int64 //in seconds } type SubmitResult struct { @@ -69,7 +69,7 @@ func NewFilePart(fullPathFilename string) (ret FilePart, err error) { glog.V(0).Info("Failed to open file: ", fullPathFilename) return ret, openErr } - ret.ReadCloser = fh + ret.Reader = fh if fi, fiErr := fh.Stat(); fiErr != nil { glog.V(0).Info("Failed to stat file:", fullPathFilename) @@ -95,8 +95,10 @@ func (fi FilePart) Upload(server string, fid string) (int, error) { if fi.ModTime != 0 { fileUrl += "?ts=" + strconv.Itoa(int(fi.ModTime)) } - defer fi.ReadCloser.Close() - ret, e := Upload(fileUrl, fi.FileName, fi.ReadCloser, fi.IsGzipped, fi.MimeType) + if closer, ok := fi.Reader.(io.Closer); ok{ + defer closer.Close() + } + ret, e := Upload(fileUrl, fi.FileName, fi.Reader, fi.IsGzipped, fi.MimeType) if e != nil { return 0, e }