Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

97 lines
2.1KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. )
  6. //MediaID : json response for uploading media
  7. type MediaID struct {
  8. Type string `json:"type"`
  9. MediaID string `json:"media_id"`
  10. CreateAt int64 `json:"created_at"`
  11. }
  12. func uploadImage(filename string) (mediaid string) {
  13. url, _ := getPostImageURL()
  14. jstr, _ := postFileForm(filename, url, "media")
  15. //{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
  16. var m = MediaID{}
  17. json.Unmarshal([]byte(jstr), &m)
  18. mediaid = m.MediaID
  19. return
  20. }
  21. func uploadVideo(filename string) (mediaid string) {
  22. url, _ := getPostVideoURL()
  23. jstr, _ := postFileForm(filename, url, "media")
  24. //{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
  25. var m = MediaID{}
  26. json.Unmarshal([]byte(jstr), &m)
  27. mediaid = m.MediaID
  28. return
  29. }
  30. func uploadVoice(path string) (mediaID string) {
  31. url, _ := getPostVoiceURL()
  32. jstr, _ := postFileForm(path, url, "media")
  33. var m = MediaID{}
  34. json.Unmarshal([]byte(jstr), &m)
  35. mediaID = m.MediaID
  36. return
  37. }
  38. func checkImageSanity() bool {
  39. //check file size should < 2M
  40. fmt.Println(" should check image file size")
  41. return true
  42. }
  43. func getPostImageURL() (url string, err error) {
  44. return getMediaPostURL("image")
  45. }
  46. func getPostVoiceURL() (url string, err error) {
  47. return getMediaPostURL("voice")
  48. }
  49. func getPostVideoURL() (url string, err error) {
  50. return getMediaPostURL("video")
  51. }
  52. func getPostThumbURL() (url string, err error) {
  53. return getMediaPostURL("thumb")
  54. }
  55. func getMediaPostURL(t string) (url string, err error) {
  56. atk, err := GetAccessToken()
  57. if err != nil {
  58. url = ""
  59. } else {
  60. url = fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s", atk, t)
  61. }
  62. return
  63. }
  64. func saveMedia2File(mediaID string) (filename string, err error) {
  65. url := mediaID2URL(mediaID)
  66. file, _, e := saveURL(url)
  67. if e != nil {
  68. return "", e
  69. }
  70. fmt.Println("save media to " + file)
  71. return file, nil
  72. }
  73. func mediaID2URL(mediaID string) (url string) {
  74. atk, _ := GetAccessToken()
  75. url = fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/media/get?access_token=%s&media_id=%s", atk, mediaID)
  76. return
  77. }