<?php
header('content-type:text/html;charset=utf-8');
error_reporting( E_ALL ^ E_NOTICE);
function CurlPost($url, $param = [], $is_Post = 1 ,$timeout = 10)
{
//初始化curl
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url); // 设置请求的路径
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);
if( $is_Post ){
curl_setopt($curl, CURLOPT_POST, 1); //设置POST提交
curl_setopt($curl,CURLOPT_SAFE_UPLOAD , true );
//提交数据
if (is_array($param)) {
#不能使用http_bulid_query
curl_setopt($curl, CURLOPT_POSTFIELDS, ($param));
// @curl_setopt($curl, CURLOPT_POSTFIELDS, ($param));
} else {
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
}
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //显示输出结果
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
//执行请求
$data = $data_str = curl_exec($curl);
//处理错误
if ($error = curl_error($curl)) {
$logdata = array(
'url' => $url,
'param' => $param,
'error' => '<span style="color:red;font-weight: bold">' . $error . '</span>',
);
var_dump($logdata);
exit;
}
curl_close($curl);
//json数据转换为数组
$data = json_decode($data, true);
if (!is_array($data)) {
$data = $data_str;
}
return $data;
}
$token = 'L3VWbz5oaUc5LS-3pTmso5Sa3GW4BqPZ3bMiz4Zy0poixY4OYrlF-S_V4jmQ5EYNaJzYXTUuc3fS8KLtPIYfAKplq4AtrAwKFCxlGSwlq2gOVZhAAAJQU';
# 临时素材的接口
$upload_url = 'https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$token.'&type=image';
$cfile = curl_file_create('C:\wamp\www\weixin\a.jpg');
$data = array(
// 'media'=>$cfile,
// 'media'=>'@'.realpath('a.jpg'),
'media'=> new CURLFile('C:\wamp\www\weixin\a.jpg'),
'form-data' => [
'filename' =>'a.jpg',
'filelength'=>1839,
'content-type'=>'image/jpeg'
]
);
$result = CurlPost( $upload_url , $data );
var_dump($result);
exit;
1、微信接口access_token获取失败
直接在阿里云服务器上curl可以可以获取到token,在命令行直接php ./test.php也可以。
问题出在php的curl扩展没有安装
2、关于上传永久素材时,提示40015.
问题在于php 5.6之后CURL不允许使用 @上传问题,可以使用 new CURLFILE('文件代替')或者 curl_create_file代替