如不知道如何下载和部署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
相关文章: