volume: PUT also conditionally gzip compress

This commit is contained in:
Chris Lu 2020-03-01 23:37:02 -08:00
parent 410bce3925
commit 7335e62199

View File

@ -12,6 +12,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/images"
. "github.com/chrislusf/seaweedfs/weed/storage/types"
"github.com/chrislusf/seaweedfs/weed/util"
)
const (
@ -63,7 +64,7 @@ func ParseUpload(r *http.Request, sizeLimit int64) (
if r.Method == "POST" {
fileName, data, mimeType, isGzipped, originalDataSize, isChunkedFile, e = parseMultipart(r, sizeLimit)
} else {
isGzipped = false
isGzipped = r.Header.Get("Content-Encoding") == "gzip"
mimeType = r.Header.Get("Content-Type")
fileName = ""
data, e = ioutil.ReadAll(io.LimitReader(r.Body, sizeLimit+1))
@ -72,6 +73,16 @@ func ParseUpload(r *http.Request, sizeLimit int64) (
io.Copy(ioutil.Discard, r.Body)
}
r.Body.Close()
if isGzipped {
if unzipped, e := util.UnGzipData(data); e == nil {
originalDataSize = len(unzipped)
}
} else if shouldGzip, _ := util.IsGzippableFileType("", mimeType); shouldGzip {
if compressedData, err := util.GzipData(data); err == nil {
data = compressedData
isGzipped = true
}
}
}
if e != nil {
return