|
|
@@ -129,46 +129,54 @@ func streamHandler(conn net.Conn, args *share.StreamServiceArgs) {
|
|
|
args.Meta["userInfo"] = resp.DataString()
|
|
|
ctx = context.WithValue(ctx, share.ReqMetaDataKey, args.Meta)
|
|
|
|
|
|
- var array = []*multipart.MultipartFile{}
|
|
|
- for {
|
|
|
- // 读取文件名长度
|
|
|
- buf := make([]byte, 3)
|
|
|
- conn.Read(buf)
|
|
|
- length, _ := strconv.Atoi(strings.TrimSpace(string(buf)))
|
|
|
-
|
|
|
- // 读取文件名
|
|
|
- fileHeader := make([]byte, length)
|
|
|
- _, err = conn.Read(fileHeader)
|
|
|
-
|
|
|
- headers := strings.Split(string(fileHeader), " ")
|
|
|
- paramName := headers[0]
|
|
|
- fileName := headers[1]
|
|
|
- fileSize := headers[2]
|
|
|
-
|
|
|
- //获取文件后缀
|
|
|
- suffix := path.Ext(fileName)
|
|
|
- tmpFile, err := ioutil.TempFile(os.TempDir(), "multipart-*"+suffix)
|
|
|
- if err != nil {
|
|
|
- g.Log().Error(err)
|
|
|
- return
|
|
|
- }
|
|
|
- defer os.Remove(tmpFile.Name())
|
|
|
-
|
|
|
- size, _ := strconv.Atoi(fileSize)
|
|
|
-
|
|
|
- buf = make([]byte, size)
|
|
|
- conn.Read(buf)
|
|
|
- tmpFile.Write(buf)
|
|
|
- file := &multipart.MultipartFile{FileName: paramName, FileSize: gconv.Int64(fileSize), File: tmpFile, Meta: args.Meta}
|
|
|
- _ = append(array, file)
|
|
|
- // 判断是否结束
|
|
|
- isEnd := make([]byte, 1)
|
|
|
- _, err = conn.Read(isEnd)
|
|
|
- if err != nil || isEnd[0] == '1' {
|
|
|
- continue
|
|
|
- }
|
|
|
- if isEnd[0] == '2' {
|
|
|
- break
|
|
|
+ var form = new(multipart.Form)
|
|
|
+ for key, value := range args.Meta {
|
|
|
+ form.Value[key][0] = value
|
|
|
+ }
|
|
|
+
|
|
|
+ fileNum := gconv.Int(args.Meta["fileNum"])
|
|
|
+ if fileNum > 0 {
|
|
|
+ for {
|
|
|
+ // 读取文件名长度
|
|
|
+ buf := make([]byte, 3)
|
|
|
+ conn.Read(buf)
|
|
|
+ length, _ := strconv.Atoi(strings.TrimSpace(string(buf)))
|
|
|
+
|
|
|
+ // 读取文件名
|
|
|
+ fileHeader := make([]byte, length)
|
|
|
+ _, err = conn.Read(fileHeader)
|
|
|
+
|
|
|
+ headers := strings.Split(string(fileHeader), " ")
|
|
|
+ paramName := headers[0]
|
|
|
+ fileName := headers[1]
|
|
|
+ fileSize := headers[2]
|
|
|
+
|
|
|
+ //获取文件后缀
|
|
|
+ suffix := path.Ext(fileName)
|
|
|
+ tmpFile, err := ioutil.TempFile(os.TempDir(), "multipart-*"+suffix)
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer os.Remove(tmpFile.Name())
|
|
|
+
|
|
|
+ size, _ := strconv.Atoi(fileSize)
|
|
|
+
|
|
|
+ buf = make([]byte, size)
|
|
|
+ conn.Read(buf)
|
|
|
+ tmpFile.Write(buf)
|
|
|
+
|
|
|
+ form.File[paramName][0] = &multipart.FileHeader{FileName: fileName, FileSize: int64(size), File: tmpFile}
|
|
|
+
|
|
|
+ // 判断是否结束
|
|
|
+ isEnd := make([]byte, 1)
|
|
|
+ _, err = conn.Read(isEnd)
|
|
|
+ if err != nil || isEnd[0] == '1' {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if isEnd[0] == '2' {
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -178,7 +186,8 @@ func streamHandler(conn net.Conn, args *share.StreamServiceArgs) {
|
|
|
message := new(dynamic.Message)
|
|
|
message.ClassName = className
|
|
|
message.MethodName = methodName
|
|
|
- message.Payload = array
|
|
|
+ message.Metadata = args.Meta
|
|
|
+ message.Payload = form
|
|
|
rsp, err := dynamic.Invoker.HandleInvoker(ctx, message)
|
|
|
if err != nil {
|
|
|
resp := make(map[string]interface{})
|