diff options
| author | Chris Lu <chris.lu@gmail.com> | 2018-07-27 02:10:10 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2018-07-27 02:10:10 -0700 |
| commit | 4d322df95ecda5fee8149bf5ede29a7666d41514 (patch) | |
| tree | f7114ae8f94b27197cf148e3d82e85d1c821f3c7 | |
| parent | e4b7e31902d6fe181f3257fd943d5fa75a7d4d2d (diff) | |
| download | seaweedfs-4d322df95ecda5fee8149bf5ede29a7666d41514.tar.xz seaweedfs-4d322df95ecda5fee8149bf5ede29a7666d41514.zip | |
avoid reparsing the multipart form
| -rw-r--r-- | weed/storage/needle.go | 12 | ||||
| -rw-r--r-- | weed/storage/needle_parse_multipart.go | 7 |
2 files changed, 10 insertions, 9 deletions
diff --git a/weed/storage/needle.go b/weed/storage/needle.go index f67556c72..e071ebbd5 100644 --- a/weed/storage/needle.go +++ b/weed/storage/needle.go @@ -29,12 +29,12 @@ type Needle struct { DataSize uint32 `comment:"Data size"` //version2 Data []byte `comment:"The actual file data"` - Flags byte `comment:"boolean flags"` //version2 - NameSize uint8 //version2 + Flags byte `comment:"boolean flags"` //version2 + NameSize uint8 //version2 Name []byte `comment:"maximum 256 characters"` //version2 - MimeSize uint8 //version2 + MimeSize uint8 //version2 Mime []byte `comment:"maximum 256 characters"` //version2 - PairsSize uint16 //version2 + PairsSize uint16 //version2 Pairs []byte `comment:"additional name value pairs, json format, maximum 64kB"` LastModified uint64 //only store LastModifiedBytesLength bytes, which is 5 bytes to disk Ttl *TTL @@ -59,10 +59,8 @@ func ParseUpload(r *http.Request) ( } } - isChunkedFile, _ = strconv.ParseBool(r.FormValue("cm")) - if r.Method == "POST" { - fileName, data, mimeType, isGzipped, e = parseMultipart(r, isChunkedFile) + fileName, data, mimeType, isGzipped, isChunkedFile, e = parseMultipart(r) } else { isGzipped = false mimeType = r.Header.Get("Content-Type") diff --git a/weed/storage/needle_parse_multipart.go b/weed/storage/needle_parse_multipart.go index af12b994d..de60f4e75 100644 --- a/weed/storage/needle_parse_multipart.go +++ b/weed/storage/needle_parse_multipart.go @@ -8,10 +8,11 @@ import ( "net/http" "path" "strings" + "strconv" ) -func parseMultipart(r *http.Request, isChunkedFile bool) ( - fileName string, data []byte, mimeType string, isGzipped bool, e error) { +func parseMultipart(r *http.Request) ( + fileName string, data []byte, mimeType string, isGzipped, isChunkedFile bool, e error) { form, fe := r.MultipartReader() if fe != nil { glog.V(0).Infoln("MultipartReader [ERROR]", fe) @@ -63,6 +64,8 @@ func parseMultipart(r *http.Request, isChunkedFile bool) ( } } + isChunkedFile, _ = strconv.ParseBool(r.FormValue("cm")) + if !isChunkedFile { dotIndex := strings.LastIndex(fileName, ".") |
