管理临时素材

临时素材上传到微信服务器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


本页地址:http://www.foxtable.com/mobilehelp/topics/0182.htm