PHP微信上传图片素材41005错误

错误信息:errcode":41005,“errmsg”:"media data missing hint
下面是微信给的接口信息:实际上我要传的参数就一个图片的绝对路径,一定要看好不是url而是绝对路径
在这里插入图片描述
报41005的错误大致就两个问题

  1. 参数错误:绝对路径不对,下方为我自己拼接的绝对路径
$media = dirname(dirname(__DIR__)).'/public/uploads/20200602/a.jpg;
  1. curl的写法问题:php5.5与php5.5以上的版本curl的写法也是不一样的
 // 拼接绝对路径 D:/phpstudy_pro/WWW/tpdemo.top/public/uploads/20200602/a.jpg
$media = dirname(dirname(__DIR__)).'/public/uploads/20200602/a.jpg;
$token = "通过appid兑换的token";
$url = 'https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$token.'&type=image';
$data = array(
	// php5.6版本以上
    "media"=> new \CURLFile(realpath($media)),
    // php5.5版本
	//  "media"=> '@' . realpath ( $media ),
	);
// curl
$ch = curl_init();
if (class_exists('\CURLFile')) {
	// php版本5.6以上
	curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
} else {
	if (defined('CURLOPT_SAFE_UPLOAD')) {
	// php5.5版本
	curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
	}
}
curl_setopt_array(
	$ch,
	array(
		// 路径
		CURLOPT_URL => $url,
		// 在http请求头中Referer的内容
		CURLOPT_REFERER => $url,
        // TRUE 时将根据 Location: 重定向时,自动设置 header 中的Referer:信息
        CURLOPT_AUTOREFERER => true,
        // 获取信息以字符串返回,不直接输出
        CURLOPT_RETURNTRANSFER => true,
        // 检查公用域名 0-不检查 1-检查SSL证书是否存在公用域名 2-检查公用域名是否与主机名匹配  默认为2
        CURLOPT_SSL_VERIFYHOST => 0,
        // 连接时间单位(秒)
        CURLOPT_CONNECTTIMEOUT => 0,
        // 允许 cURL 函数执行的最长秒数。
        CURLOPT_TIMEOUT => 30,
        // 在HTTP请求中包含一个"User-Agent: "头的字符串。
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36'
	)
);

	// 表单post提交
    curl_setopt ( $ch, CURLOPT_POST, 1 );
    // 验证证书
    curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
    // 模拟post发送数据
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
    $output = curl_exec($ch);
    curl_close($ch);
    var_dump($output);

这是我写的测试版,需要的小伙伴可以把CURL拿出去单独写一个方法