三、新增临时素材
三、新增临时素材
1.官方文档
公众号在发送信息时,可能会用到一些临时的多媒体信息,对多媒体文件、多媒体信息获取和调用等操作,是通过media_id来进行的,通过新增临时素材接口,可以上传多媒体文件。
注:临时素材只能在微信服务器保存三天,所以在使用临时素材之前应该先判断临时素材是否有效
1.1接口调用说明
调用此接口,要求使用post方式且必须为https协议,这里文档推荐我们是curl命令行工具模拟表单post,我们考虑到安全性(服务器里调用exe程序是非安全的且可能没有权限),这里我们还是使用webrequest模拟表单向微信接口发出post请求
1.2接口返回说明
文件上传成功后,返回上传的文件类型、媒体文件上传时间戳,以及最重要的media_id,我们可以将这些信息存入数据库中,当要使用时,从数据库取出,先通过create_at字段判断文件是否过期,在进行后续操作
2.开发应用:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
//1.定义接口url//2.发送带文件流的数据post到微信接口string jsonstr = Funcs.PostFormData(new List<FormItem>() {new FormItem(){Name="access_token",Value=AcessToken.GetAcessToken(),ParamType=ParamType.Text},new FormItem(){Name="type",Value="image",ParamType=ParamType.Text},new FormItem(){Name="media",Value=context.Server.MapPath("/images/a.jpg"),ParamType=ParamType.File}}, url);//3.解析返回json字符串if (jsonstr.IndexOf("media_id") > -1){ MediaResult result = JsonConvert.DeserializeObject<MediaResult>(jsonstr); //将获取到的media_id以及过期时间等存储到数据库中 context.Response.Write("MEDIA_ID:" + result.MEDIA_ID + ",created_at:" + TimeStampUtils.GetTime(result.created_at.ToString()));}else{ ErrorResult result = JsonConvert.DeserializeObject<ErrorResult>(jsonstr); context.Response.Write("errcode:" + result.errcode + ",errmsg:" + result.errmsg);} |
注:Funcs.PostFormData方法分别传入url和参数集合(参数名、参数值、参数类型),返回响应html字符串
结果:
浙公网安备 33010602011771号