如不知道如何下載和部署carp,請看《carp的介紹和配置》一文。java
公衆平臺的上傳下載多媒體文件都是典型的主動消息動做,須要提醒一點,使用接口上傳的多媒體文件,是沒法使用公衆平臺的後臺管理查看到的,上傳成功後的mediaId,只能經過接口查看,因此carp把全部已上傳的多媒體文件的本地位置,和得到的mediaId保存到了updatefile這張表。數據庫
carp中已內建了多媒體文件上傳和下載的task的定義(不理解task含義的,請參考carp搭建公衆平臺(一)——發送客服消息一文),能夠很方便的傳遞多媒體文件到公衆平臺。
url
上傳多媒體文件的task名叫作「updatefile」,對應的Task類是UpdateFileTask.java,回調的Work類是UpdateFileWork.java,使用起來也很簡單,部分代碼以下:spa
//得到上傳文件.net File file = new File("c:/20121218182221_504.jpg");orm //得到Task視頻 UpdateFileTask task = (UpdateFileTask) carp.getTaskRepertory()xml .getTaskByName("updatefile");blog //爲task賦值圖片上傳文件,對應的方法還有setVoiceFile()和setVedioFile(),對應音頻文件和視頻文件接口 task.setImgFile(file); //發送任務 task.send(); |
任務執行成功後,會回調UpdateFileWork中的toDo()方法,將返回的mediaId保存到updatefile表中;具體的代碼可查看demo中的UpdateFile。
下載多媒體文件的task名叫作「downloadfile」,對應的Task類是DownloadFileTask.java,回調的Work類是DownloadFileWork,須要提醒,這個回調的work沒有把下載後的文件信息保存到數據庫,只是將多媒體文件簡單的保存到了本地,若是須要從新發送或者保存到數據庫,須要自定義一個本身的Work類。下載多媒體文件的task使用也很方便,部分代碼以下:
//得到任務實例 DownloadFileTask task = (DownloadFileTask) carp.getTaskRepertory() .getTaskByName("downloadfile"); //把須要下載的多媒體文件的mediaId爲task賦值 task .setMediaId("wfvPPnhChKK00uTf_PzadtQ6C2w1H6XKjFV7pY68jbKB3DxTsINAgILfn3bs_NxO"); //發送任務 task.send(); |
carp中內置了大多數的複雜任務,經過對比weixin.task.xml中url,就能夠了解這一點了。
carp技術羣:368193775
相關文章: