管理临时素材
临时素材上传到微信服务器3天后,会被自动删除。
新增临时素材
新增临时素材的接口说明,参考:
https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/New_temporary_materials.html
例如上传一个临时图片素材,可以参考代码:
Dim
url As
String =
"https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type=image"
Dim
hc As
new HttpClient(CExp(url,
Functions.Execute("GetAccessToken")))
hc.Files.Add("media","c:\data\sample.jpg")
'要上传的文件
Dim
jo As
JObject = JObject.Parse(
hc.getdata)
If
jo("errcode")
Is Nothing
Then
Dim dr
As DataRow =
DataTables("Materials").AddNew()
dr("Type")
= "临时图片"
dr("mediaID")
= jo("media_id")
dr("UpdateTime")
= Date.Now
dr("FileName")
= "sample.jpg"
dr.Save()
Else
MessageBox.Show(jo.ToString)
End
If
所有素材类型的上传代码都一样,只需修改一下type参数即可。
唯一例外的是上传缩略图(thumb),实际返回的JSON数据和腾讯官方的说明并不一致,返回的媒体ID键值是"thumb_media_id",不是"media_id",所以需要修改代码:
Dim
url As
String = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type=thumb"
Dim
hc As new
HttpClient(CExp(url,
Functions.Execute("GetAccessToken")))
hc.Files.Add("media","c:\data\006s.jpg")
'要上传的文件
Dim
jo As JObject
= JObject.Parse(
hc.getdata)
If
jo("errcode")
Is Nothing Then
Dim dr
As DataRow =
DataTables("Materials").AddNew()
dr("Type")
= "临时缩略图"
dr("mediaID")
= jo("thumb_media_id")
dr("UpdateTime")
= Date.Now
dr("FileName")
= "006s.jpg"
dr.Save()
Else
MessageBox.Show(jo.ToString)
End If
下载临时素材
下载临时素材的接口说明:
https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_temporary_materials.html
下载临时素材,会有两种可能:
1、获取成功,返回文件。
2、获取失败,返回JSON格式的错误信息。
但是HttpClient的GetFile会直接将返回内容保存为文件,不管是返回的内容是文件还是错误信息。
我们可以通过判断HttpClient的ResponseContentType属性,如果其值为"text/plain",说明返回的不是文件,而是提示信息。
参考代码:
Dim
fl As
String = "c:\data\abc.jpg"
'要保存为的本地文件
Dim
sucess As
Boolean = True
'用于标记是否下载成功
Dim
url As
String =
"https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}"
Dim
mediaID As
String =
"qINAMviNpYpn5EcMwb2EmrsoCR6zUo8rJQplei1uyluhfbSVZ_esSva9NkuU8W1m"
'要下载的素材ID
url =
CExp(url,
Functions.Execute("GetAccessToken"),
mediaID)
Dim
hc As
New HttpClient(url)
If
hc.GetFile(fl)
Then
If hc.ResponseContentType.StartsWith("text/plain") Then
Dim jo
As JObject =
JObject.Parse(Filesys.ReadAllText(fl))
MessageBox.Show(jo.ToString)
'显示错误信息
FileSys.DeleteFile(fl)
'删除文件
sucess = False
End If
Else
sucess = False
End
If
If
sucess Then
MessageBox.Show("临时素材下载成功!")
Else
MessageBox.Show("临时素材下载失败!")
End
If