Skip to content

Commit

Permalink
FormData addFile
Browse files Browse the repository at this point in the history
  • Loading branch information
zhaomingqiang committed Dec 12, 2020
1 parent e86e970 commit aa43785
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 74 deletions.
34 changes: 18 additions & 16 deletions api/core/handlers/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -365,22 +365,24 @@ func reqBodyFromFormData(_ *core.Context, req *request.Request) {
}
writer := multipart.NewWriter(reqBody)
for key, val := range fd.Params() {
err := writer.WriteField(key, fmt.Sprint(val))
if err != nil {
req.Err = err
return
}
}
for _, file := range fd.Files() {
part, err := writer.CreatePart(file.MIMEHeader())
if err != nil {
req.Err = err
return
}
_, err = io.Copy(part, file)
if err != nil {
req.Err = err
return
switch v := val.(type) {
case *request.File:
part, err := writer.CreatePart(v.MIMEHeader())
if err != nil {
req.Err = err
return
}
_, err = io.Copy(part, v)
if err != nil {
req.Err = err
return
}
default:
err := writer.WriteField(key, fmt.Sprint(val))
if err != nil {
req.Err = err
return
}
}
}
req.ContentType = writer.FormDataContentType()
Expand Down
23 changes: 6 additions & 17 deletions api/core/request/formdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@ type FormData struct {
files []*File
}

func (fd *FormData) Files() []*File {
return fd.files
}

func (fd *FormData) Params() map[string]interface{} {
return fd.params
}
Expand All @@ -27,18 +23,20 @@ func NewFormData() *FormData {
}
}

func (fd *FormData) SetField(key string, val interface{}) *FormData {
fd.params[key] = val
func (fd *FormData) AddParam(field string, val interface{}) *FormData {
fd.params[field] = val
return fd
}

func (fd *FormData) AppendFile(file *File) *FormData {
func (fd *FormData) AddFile(field string, file *File) *FormData {
fd.params[field] = file
file.fieldName = field
fd.files = append(fd.files, file)
return fd
}

func (fd *FormData) HasStream() bool {
for _, file := range fd.Files() {
for _, file := range fd.files {
isStream := file.IsStream()
if isStream {
return isStream
Expand Down Expand Up @@ -88,15 +86,6 @@ func (f *File) SetType(typ string) *File {
return f
}

func (f *File) FieldName() string {
return f.fieldName
}

func (f *File) SetFieldName(fieldName string) *File {
f.fieldName = fieldName
return f
}

func (f *File) Name() string {
return f.name
}
Expand Down
12 changes: 6 additions & 6 deletions sample/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ var conf = test.GetInternalConf("online")

func main() {
//testSendMessage()
testUploadFile()
//testDownloadFile()
//testUploadFile()
testDownloadFile()
}

// send message
Expand Down Expand Up @@ -57,22 +57,22 @@ type UploadImage struct {
// upload image
func testUploadFile() {
coreCtx := core.WrapContext(context.Background())
var formData = request.NewFormData()
formData.AddParam("image_type", "message")
bs, err := ioutil.ReadFile("test.png")
if err != nil {
fmt.Println(err)
return
}
var formData = request.NewFormData()
formData.SetField("image_type", "message")
formData.AppendFile(request.NewFile().SetContent(bs).SetFieldName("image"))
formData.AddFile("image", request.NewFile().SetContent(bs))
/*
// stream upload, file implement io.Reader
file, err := os.Open("test.png")
if err != nil {
fmt.Println(err)
return
}
formData.AppendFile(request.NewFile().SetContentStream(file).SetFieldName("image"))
formData.AddFile("image", request.NewFile().SetContentStream(file))
*/
ret := &UploadImage{}
err = api.Send(coreCtx, conf, request.NewRequestWithNative("image/v4/put", "POST",
Expand Down
2 changes: 1 addition & 1 deletion sample/api/calendar.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,4 @@ func testCalendarList() {
count, len(result.CalendarList), pageToken, syncToken)
}
fmt.Printf("calendar list finish\n")
}
}
3 changes: 2 additions & 1 deletion sample/api/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ import (
"github.com/larksuite/oapi-sdk-go/api/core/request"
"github.com/larksuite/oapi-sdk-go/api/core/response"
"github.com/larksuite/oapi-sdk-go/core"
"github.com/larksuite/oapi-sdk-go/core/test"
"github.com/larksuite/oapi-sdk-go/core/tools"
image "github.com/larksuite/oapi-sdk-go/service/image/v4"
"os"
)

var imageService = image.NewService(conf)
var imageService = image.NewService(test.GetInternalConf("online"))

func main() {
testUpload()
Expand Down
63 changes: 31 additions & 32 deletions service/image/v4/api.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion service/image/v4/model.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit aa43785

Please sign in to comment.