1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| func createRequestBody(filePathArray []string) (string, io.Reader, error) { buf := new(bytes.Buffer) bw := multipart.NewWriter(buf)
var fileListString string for i, l := 0, len(filePathArray); i < l; i++ {
filePath := filePathArray[i] filePath, err := url.QueryUnescape(filePath) if err != nil { return "", nil, err } fileName := filepath.Base(filePath) suffixName := path.Ext(filePath) if !supportSuffix(suffixName) { return "", nil, fmt.Errorf("file %s not support", filePath) }
if i == l-1 { fileListString += fileName } else { fileListString += fileName + "," } }
err := bw.WriteField("username", username) if err != nil { return "", nil, err }
h := md5.New() h.Write([]byte(passwd)) err = bw.WriteField("passwd", hex.EncodeToString(h.Sum(nil))) if err != nil { return "", nil, err } err = bw.WriteField("file_list", fileListString) if err != nil { return "", nil, err }
for i, l := 0, len(filePathArray); i < l; i++ { filePath := filePathArray[i] filePath, err := url.QueryUnescape(filePath) if err != nil { return "", nil, err } fileName := filepath.Base(filePath) file, err := os.Open(filePath) if err != nil { return "", nil, err } formFileWriter, err := bw.CreateFormFile(fileName, fileName) if err != nil { return "", nil, err } io.Copy(formFileWriter, file) err = file.Close() if err != nil { return "", nil, err } } _ = bw.Close() return bw.FormDataContentType(), buf, nil }
|