aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislusf <chris.lu@gmail.com>2015-01-16 07:27:21 -0800
committerchrislusf <chris.lu@gmail.com>2015-01-16 07:27:21 -0800
commit7b10d62096272d165727c9e30ed748b5561e8769 (patch)
tree2002004714039636e8f4a65166adf64274c0343b
parent0bd992aa44f5410d515bbbb7868b64b4da281707 (diff)
parenta86042e413e4a702c09943e53fa06f358c179e06 (diff)
downloadseaweedfs-7b10d62096272d165727c9e30ed748b5561e8769.tar.xz
seaweedfs-7b10d62096272d165727c9e30ed748b5561e8769.zip
Merge pull request #60 from EPICPaaS/master
Fix the #59 and #56
-rw-r--r--go/storage/needle.go44
1 files changed, 32 insertions, 12 deletions
diff --git a/go/storage/needle.go b/go/storage/needle.go
index a24169c00..e4994da3f 100644
--- a/go/storage/needle.go
+++ b/go/storage/needle.go
@@ -59,19 +59,13 @@ func ParseUpload(r *http.Request) (fileName string, data []byte, mimeType string
e = fe
return
}
- part, fe := form.NextPart()
- for {
- if fe != nil {
- glog.V(0).Infoln("Reading Multi part [ERROR]", fe)
- e = fe
- return
- }
- if part.FileName() != "" {
- break //found the first <file type> multi-part
- }
-
- part, fe = form.NextPart()
+ //first multi-part item
+ part, fe := form.NextPart()
+ if fe != nil {
+ glog.V(0).Infoln("Reading Multi part [ERROR]", fe)
+ e = fe
+ return
}
fileName = part.FileName()
@@ -84,6 +78,32 @@ func ParseUpload(r *http.Request) (fileName string, data []byte, mimeType string
glog.V(0).Infoln("Reading Content [ERROR]", e)
return
}
+
+ //if the filename is empty string, do a search on the other multi-part items
+ for fileName == "" {
+ part2, fe := form.NextPart()
+ if fe != nil {
+ break // no more or on error, just safely break
+ }
+
+ fName := part2.FileName()
+
+ //found the first <file type> multi-part has filename
+ if fName != "" {
+ data2, fe2 := ioutil.ReadAll(part2)
+ if fe2 != nil {
+ glog.V(0).Infoln("Reading Content [ERROR]", fe2)
+ e = fe2
+ return
+ }
+
+ //update
+ data = data2
+ fileName = path.Base(fName)
+ break
+ }
+ }
+
dotIndex := strings.LastIndex(fileName, ".")
ext, mtype := "", ""
if dotIndex > 0 {