Skip to content

Commit 25d055d

Browse files
committed
添加新版的媒体文件上传
1 parent 49b51e1 commit 25d055d

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

media.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,26 @@ func (r *Client) MediaUpload(options MediaUploadOptions) (info MediaUploadSchema
5959
return info, nil
6060
}
6161

62+
// MediaOriginUpload 上传临时素材
63+
//上传的媒体文件限制
64+
//所有文件size必须大于5个字节
65+
//图片(image):2MB,支持JPG,PNG格式
66+
//语音(voice) :2MB,播放长度不超过60s,仅支持AMR格式
67+
//视频(video) :10MB,支持MP4格式
68+
//普通文件(file):20MB
69+
func (r *Client) MediaOriginUpload(fileName, fileType string, size int, body []byte) (info MediaUploadSchema, err error) {
70+
data, err := util.HttpPostOriginFile(fmt.Sprintf(mediaUploadAddr, r.accessToken, fileType), fileName, size, body)
71+
if err != nil {
72+
return info, err
73+
}
74+
_ = json.Unmarshal(data, &info)
75+
fmt.Println(string(data))
76+
if info.ErrCode != 0 {
77+
return info, NewSDKErr(info.ErrCode, info.ErrMsg)
78+
}
79+
return info, nil
80+
}
81+
6282
// MediaGet 获取临时素材
6383
func (r *Client) MediaGet(mediaID string) string {
6484
return fmt.Sprintf(mediaGetAddr, r.accessToken, mediaID)

util/util.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,35 @@ func HttpPostFile(path string, options FileOptions) ([]byte, error) {
8080
}
8181
return ioutil.ReadAll(resp.Body)
8282
}
83+
84+
// HttpPostOriginFile POST上传文件
85+
func HttpPostOriginFile(path, fileName string, size int, body []byte) ([]byte, error) {
86+
bodyBuf := bytes.Buffer{}
87+
bodyWriter := multipart.NewWriter(&bodyBuf)
88+
89+
fileWriter, err := bodyWriter.CreateFormFile("media", fileName)
90+
if err != nil {
91+
return nil, err
92+
}
93+
94+
if _, err = io.Copy(fileWriter, bytes.NewReader(body)); err != nil {
95+
return nil, err
96+
}
97+
98+
contentType := bodyWriter.FormDataContentType()
99+
_ = bodyWriter.Close()
100+
101+
_ = bodyWriter.WriteField("filelength", strconv.Itoa(size))
102+
103+
resp, err := http.Post(path, contentType, &bodyBuf)
104+
if err != nil {
105+
return nil, err
106+
}
107+
108+
defer resp.Body.Close()
109+
110+
if resp.StatusCode != http.StatusOK {
111+
return nil, err
112+
}
113+
return ioutil.ReadAll(resp.Body)
114+
}

0 commit comments

Comments
 (0)