0x4a52466c696e74 9 miesięcy temu
rodzic
commit
47e07f843c
1 zmienionych plików z 13 dodań i 3 usunięć
  1. 13 3
      rest_http/request_out.go

+ 13 - 3
rest_http/request_out.go

@@ -3,6 +3,7 @@ package rest_http
 import (
 	"bytes"
 	"encoding/json"
+	"fmt"
 	"io"
 	"mime/multipart"
 	"net/http"
@@ -61,9 +62,18 @@ func (s *RequestOut) Write(writer io.Writer) rest.IErrorArgs {
 
 		// Добавляем файлы
 		for filename, file := range files {
-			part, err := writer.CreateFormFile("file", filename)
-			if err != nil {
-				return rest.ErrorMessage("ErrResponsePartFileCreate", err.Error())
+			var part io.Writer
+			if mimeFile, check := file.(*rest.MimeFile); check {
+				h := make(textproto.MIMEHeader)
+				h.Set("Content-Type", mimeFile.MimeType)
+				h.Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, mimeFile.Name))
+				if part, err = writer.CreatePart(h); err != nil {
+					return rest.ErrorMessage("ErrResponsePartFileCreate", err.Error())
+				}
+			} else {
+				if part, err = writer.CreateFormFile("file", filename); err != nil {
+					return rest.ErrorMessage("ErrResponsePartFileCreate", err.Error())
+				}
 			}
 			if _, err := io.Copy(part, file); err != nil {
 				return rest.ErrorMessage("ErrResponsePartFileCopy", err.Error())