三、新增临时素材
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字符串
结果: