Skip to content

Commit 2c6c439

Browse files
committed
fix image upload
1 parent ce33239 commit 2c6c439

File tree

2 files changed

+26
-23
lines changed

2 files changed

+26
-23
lines changed

apis/security/security.go

+25-22
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ package security
1717

1818
import (
1919
"bytes"
20-
"io"
20+
"io/ioutil"
2121
"mime/multipart"
2222
"os"
2323
"path"
@@ -41,27 +41,30 @@ See: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-c
4141
POST(@media) https://api.weixin.qq.com/wxa/img_sec_check?access_token=ACCESS_TOKEN
4242
*/
4343
func ImgSecCheck(ctx *miniprogram.Miniprogram, media string) (resp []byte, err error) {
44-
r, w := io.Pipe()
45-
m := multipart.NewWriter(w)
46-
go func() {
47-
defer w.Close()
48-
defer m.Close()
49-
50-
part, err := m.CreateFormFile("media", path.Base(media))
51-
if err != nil {
52-
return
53-
}
54-
file, err := os.Open(media)
55-
if err != nil {
56-
return
57-
}
58-
defer file.Close()
59-
if _, err = io.Copy(part, file); err != nil {
60-
return
61-
}
62-
63-
}()
64-
return ctx.Client.HTTPPost(apiImgSecCheck, r, m.FormDataContentType())
44+
45+
file, err := os.Open(media)
46+
if err != nil {
47+
return nil, err
48+
}
49+
fileContents, err := ioutil.ReadAll(file)
50+
if err != nil {
51+
return nil, err
52+
}
53+
file.Close()
54+
55+
body := new(bytes.Buffer)
56+
writer := multipart.NewWriter(body)
57+
part, err := writer.CreateFormFile("media", path.Base(media))
58+
if err != nil {
59+
return nil, err
60+
}
61+
part.Write(fileContents)
62+
63+
err = writer.Close()
64+
if err != nil {
65+
return nil, err
66+
}
67+
return ctx.Client.HTTPPost(apiImgSecCheck, body, writer.FormDataContentType())
6568
}
6669

6770
/*

apis/security/security_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func TestImgSecCheck(t *testing.T) {
4848
wantResp []byte
4949
wantErr bool
5050
}{
51-
{name: "case1", args: args{ctx: test.MockMiniprogram}, wantResp: mockResp["case1"], wantErr: false},
51+
{name: "case1", args: args{ctx: test.MockMiniprogram, media: "security.go"}, wantResp: mockResp["case1"], wantErr: false},
5252
}
5353
for _, tt := range tests {
5454
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)