Browse Source

volume: PUT also conditionally gzip compress

pull/1213/head
Chris Lu 5 years ago
parent
commit
7335e62199
  1. 13
      weed/storage/needle/needle.go

13
weed/storage/needle/needle.go

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

Loading…
Cancel
Save