diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-03-01 23:37:02 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-03-01 23:37:02 -0800 |
| commit | 7335e6219921fd3976179f6a74ea4a2dcdc43e1e (patch) | |
| tree | 5ce4ce92d3a21ce84b7b9595c849d36287ff2677 | |
| parent | 410bce3925fb47d6ba21f838fafed4ff7c892a90 (diff) | |
| download | seaweedfs-7335e6219921fd3976179f6a74ea4a2dcdc43e1e.tar.xz seaweedfs-7335e6219921fd3976179f6a74ea4a2dcdc43e1e.zip | |
volume: PUT also conditionally gzip compress
| -rw-r--r-- | weed/storage/needle/needle.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/weed/storage/needle/needle.go b/weed/storage/needle/needle.go index 494cc138e..022e8bf14 100644 --- a/weed/storage/needle/needle.go +++ b/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 |
