You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace LaneWeChat\Core;
/**
* 多媒体文件上传与下载管理类
* 该类提供将图片、语音、视频等文件上传到微信服务器的功能,以及从微信服务器下载多媒体文件的功能。
*/
class Media {
/**
* 上传多媒体文件到微信服务器
* 此方法允许上传图片、语音、视频等文件到微信服务器并返回对应的media_id用于后续获取多媒体文件。
* 上传的文件有格式和大小限制,具体如下:
* 图片image: 1M支持JPG格式
* 语音voice2M播放长度不超过60秒支持AMR/MP3格式
* 视频video10MB支持MP4格式
* 缩略图thumb64KB支持JPG格式
* 媒体文件在微信服务器的保存时间为3天之后media_id将失效。
*
* @param string $filename 要上传的文件的绝对路径
* @param string $type 媒体文件类型可以是图片image、语音voice、视频video和缩略图thumb
* @return array 上传成功后返回包含media_id和其他信息的数组
*/
public static function upload($filename, $type) {
// 获取微信公众号的ACCESS_TOKEN
$accessToken = AccessToken::getAccessToken();
// 构造多媒体文件上传的URL
$queryUrl = 'http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=' . $accessToken . '&type=' . $type;
// 准备上传的数据,使用'@'符号指定文件路径
$data = array('media' => '@' . $filename);
// 发起POST请求上传文件
return Curl::callWebServer($queryUrl, $data, 'POST', 1, 0);
}
/**
* 从微信服务器下载多媒体文件
* 此方法根据提供的media_id从微信服务器下载对应的多媒体文件。
*
* @param string $mediaId 微信服务器上的多媒体文件ID
* @return mixed 下载的文件内容或下载失败的错误信息
*
* 下载多媒体文件时的HTTP头信息示例
* HTTP/1.1 200 OK
* Connection: close
* Content-Type: image/jpeg
* Content-disposition: attachment; filename="MEDIA_ID.jpg"
* Date: Sun, 06 Jan 2013 10:20:18 GMT
* Cache-Control: no-cache, must-revalidate
* Content-Length: 339721
*
* 使用curl命令下载多媒体文件的示例
* curl -G "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
*/
public static function download($mediaId) {
// 获取微信公众号的ACCESS_TOKEN
$accessToken = AccessToken::getAccessToken();
// 构造多媒体文件下载的URL
$queryUrl = 'http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=' . $accessToken . '&media_id=' . $mediaId;
// 发起GET请求下载文件
return Curl::callWebServer($queryUrl, '', 'GET', 0);
}
}