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

2 months ago
<?php
namespace LaneWeChat\Core;
/**
* 多媒体文件上传与下载管理类
* 该类提供将图片、语音、视频等文件上传到微信服务器的功能,以及从微信服务器下载多媒体文件的功能。
*/
2 months ago
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和其他信息的数组
*/
2 months ago
public static function upload($filename, $type) {
// 获取微信公众号的ACCESS_TOKEN
2 months ago
$accessToken = AccessToken::getAccessToken();
// 构造多媒体文件上传的URL
2 months ago
$queryUrl = 'http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=' . $accessToken . '&type=' . $type;
// 准备上传的数据,使用'@'符号指定文件路径
2 months ago
$data = array('media' => '@' . $filename);
// 发起POST请求上传文件
2 months ago
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"
*/
2 months ago
public static function download($mediaId) {
// 获取微信公众号的ACCESS_TOKEN
2 months ago
$accessToken = AccessToken::getAccessToken();
// 构造多媒体文件下载的URL
2 months ago
$queryUrl = 'http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=' . $accessToken . '&media_id=' . $mediaId;
// 发起GET请求下载文件
2 months ago
return Curl::callWebServer($queryUrl, '', 'GET', 0);
}
}