mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
Merge pull request #428 from sparklxb/master
fix bug: upload big .gz file more than maxMB
This commit is contained in:
commit
297f64e286
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue