Skip to content

Commit

Permalink
添加新版的媒体文件上传
Browse files Browse the repository at this point in the history
  • Loading branch information
NICEXAI committed Jul 30, 2021
1 parent 49b51e1 commit 25d055d
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
20 changes: 20 additions & 0 deletions media.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,26 @@ func (r *Client) MediaUpload(options MediaUploadOptions) (info MediaUploadSchema
return info, nil
}

// MediaOriginUpload 上传临时素材
//上传的媒体文件限制
//所有文件size必须大于5个字节
//图片(image):2MB,支持JPG,PNG格式
//语音(voice) :2MB,播放长度不超过60s,仅支持AMR格式
//视频(video) :10MB,支持MP4格式
//普通文件(file):20MB
func (r *Client) MediaOriginUpload(fileName, fileType string, size int, body []byte) (info MediaUploadSchema, err error) {
data, err := util.HttpPostOriginFile(fmt.Sprintf(mediaUploadAddr, r.accessToken, fileType), fileName, size, body)
if err != nil {
return info, err
}
_ = json.Unmarshal(data, &info)
fmt.Println(string(data))
if info.ErrCode != 0 {
return info, NewSDKErr(info.ErrCode, info.ErrMsg)
}
return info, nil
}

// MediaGet 获取临时素材
func (r *Client) MediaGet(mediaID string) string {
return fmt.Sprintf(mediaGetAddr, r.accessToken, mediaID)
Expand Down
32 changes: 32 additions & 0 deletions util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,35 @@ func HttpPostFile(path string, options FileOptions) ([]byte, error) {
}
return ioutil.ReadAll(resp.Body)
}

// HttpPostOriginFile POST上传文件
func HttpPostOriginFile(path, fileName string, size int, body []byte) ([]byte, error) {
bodyBuf := bytes.Buffer{}
bodyWriter := multipart.NewWriter(&bodyBuf)

fileWriter, err := bodyWriter.CreateFormFile("media", fileName)
if err != nil {
return nil, err
}

if _, err = io.Copy(fileWriter, bytes.NewReader(body)); err != nil {
return nil, err
}

contentType := bodyWriter.FormDataContentType()
_ = bodyWriter.Close()

_ = bodyWriter.WriteField("filelength", strconv.Itoa(size))

resp, err := http.Post(path, contentType, &bodyBuf)
if err != nil {
return nil, err
}

defer resp.Body.Close()

if resp.StatusCode != http.StatusOK {
return nil, err
}
return ioutil.ReadAll(resp.Body)
}

0 comments on commit 25d055d

Please sign in to comment.