Only limit input parameter to io.Reader

This commit is contained in:
Chris Lu 2013-08-14 11:31:39 -07:00
parent 8e1ac16d16
commit 37b231b5dc

View file

@ -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
}