Merge pull request #428 from sparklxb/master

fix bug: upload big .gz file more than maxMB
This commit is contained in:
Chris Lu 2017-01-03 21:23:08 -08:00 committed by GitHub
commit 297f64e286
3 changed files with 34 additions and 33 deletions

View file

@ -63,7 +63,7 @@ var cmdUpload = &Command{
func runUpload(cmd *Command, args []string) bool { func runUpload(cmd *Command, args []string) bool {
secret := security.Secret(*upload.secretKey) secret := security.Secret(*upload.secretKey)
if len(cmdUpload.Flag.Args()) == 0 { if len(args) == 0 {
if *upload.dir == "" { if *upload.dir == "" {
return false return false
} }

View file

@ -92,18 +92,15 @@ func newFilePart(fullPathFilename string) (ret FilePart, err error) {
} }
ret.Reader = fh ret.Reader = fh
if fi, fiErr := fh.Stat(); fiErr != nil { fi, fiErr := fh.Stat()
if fiErr != nil {
glog.V(0).Info("Failed to stat file:", fullPathFilename) glog.V(0).Info("Failed to stat file:", fullPathFilename)
return ret, fiErr return ret, fiErr
} else {
ret.ModTime = fi.ModTime().UTC().Unix()
ret.FileSize = fi.Size()
} }
ret.ModTime = fi.ModTime().UTC().Unix()
ret.FileSize = fi.Size()
ext := strings.ToLower(path.Ext(fullPathFilename)) ext := strings.ToLower(path.Ext(fullPathFilename))
ret.IsGzipped = ext == ".gz" ret.IsGzipped = ext == ".gz"
if ret.IsGzipped {
ret.FileName = fullPathFilename[0 : len(fullPathFilename)-3]
}
ret.FileName = fullPathFilename ret.FileName = fullPathFilename
if ext != "" { if ext != "" {
ret.MimeType = mime.TypeByExtension(ext) ret.MimeType = mime.TypeByExtension(ext)

View file

@ -106,35 +106,39 @@ func ParseUpload(r *http.Request) (
} }
} }
dotIndex := strings.LastIndex(fileName, ".") isChunkedFile, _ = strconv.ParseBool(r.FormValue("cm"))
ext, mtype := "", "" isGzipped = false
if dotIndex > 0 { if !isChunkedFile {
ext = strings.ToLower(fileName[dotIndex:]) dotIndex := strings.LastIndex(fileName, ".")
mtype = mime.TypeByExtension(ext) ext, mtype := "", ""
} if dotIndex > 0 {
contentType := part.Header.Get("Content-Type") ext = strings.ToLower(fileName[dotIndex:])
if contentType != "" && mtype != contentType { mtype = mime.TypeByExtension(ext)
mimeType = contentType //only return mime type if not deductable }
mtype = contentType contentType := part.Header.Get("Content-Type")
} if contentType != "" && mtype != contentType {
if part.Header.Get("Content-Encoding") == "gzip" { mimeType = contentType //only return mime type if not deductable
isGzipped = true mtype = contentType
} else if operation.IsGzippable(ext, mtype) { }
if data, e = operation.GzipData(data); e != nil { if part.Header.Get("Content-Encoding") == "gzip" {
return isGzipped = true
} else if operation.IsGzippable(ext, mtype) {
if data, e = operation.GzipData(data); e != nil {
return
}
isGzipped = true
}
if ext == ".gz" {
isGzipped = true
}
if strings.HasSuffix(fileName, ".gz") &&
!strings.HasSuffix(fileName, ".tar.gz") {
fileName = fileName[:len(fileName)-3]
} }
isGzipped = true
}
if ext == ".gz" {
isGzipped = true
}
if strings.HasSuffix(fileName, ".gz") &&
!strings.HasSuffix(fileName, ".tar.gz") {
fileName = fileName[:len(fileName)-3]
} }
modifiedTime, _ = strconv.ParseUint(r.FormValue("ts"), 10, 64) modifiedTime, _ = strconv.ParseUint(r.FormValue("ts"), 10, 64)
ttl, _ = ReadTTL(r.FormValue("ttl")) ttl, _ = ReadTTL(r.FormValue("ttl"))
isChunkedFile, _ = strconv.ParseBool(r.FormValue("cm"))
return return
} }
func NewNeedle(r *http.Request, fixJpgOrientation bool) (n *Needle, e error) { func NewNeedle(r *http.Request, fixJpgOrientation bool) (n *Needle, e error) {