本人github -> link
线下上传
线下较为简单,通过form发送值,input要上传文件类型
<input type="file" name="image" id="">
form表单+参数:
enctype="multipart/form-data"
控制器
public function do_upload(Request $request){
$name='image';
if(!empty($request->hasFile($name))){
$path=request()->file('image')->store('goods');
dd('/storage/'.$path);
}else{
echo '嘟嘟';
}
}
打印路径
加上域名访问一下子!
线上上传
表单内容无特殊要求
拿到资源路径
$file_name=time().rand(100000,999999).'.'.$ext;//随便用rand函数生成一个名字
$path=request()->file($name)->storeAs('wechat/'.$source_type,$file_name);
返回结果
拿到其于本地绝对路径
$path = realpath('./storage/'.$path);
注意:video资源与其他类型资源有异(此guzzle_upload为文档内容,请自行设计)link
$url='https://api.weixin.qq.com/cgi-bin/material/add_material?access_token='.$this->get_wechat_access_token().'&type='.$source_type;
if($source_type=='video'){
$title='标题';
$desc='描述';
$result=$this->guzzle_upload($url,$path,$client,1,$title,$desc);//guzzle上传video
}else{
$result=$this->guzzle_upload($url,$path,$client);//guzzle上传除video外素材
}
删除素材
https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=ACCESS_TOKEN
传一个media_id参数
“media_id”:MEDIA_ID
curl_post为curl传输工具
$url='https://api.weixin.qq.com/cgi-bin/material/del_material?access_token='.$this->tools->get_access_token();
$data=[
'media_id'=>$media_id
];
$re=$this->tools->curl_post($url,json_encode($data));
curl是url的传输工具,可以说是个正常的开发人员都会用到,因为他支持文件传输与下载,所以很有逼格,另外还有guzzle,上面有链接可以打开。如果有机会我会发布专门讲解传输工具的csdn,而现在我也不太懂,等我研究研究
拿到素材列表
url
https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
data
{
“type”:TYPE,
“offset”:OFFSET,
“count”:COUNT
}
也是通过传输工具。
$req=$request->all();
// dd($req);
empty($req['source_type'])?$source_type='image':$source_type=$req['source_type'];
if(!in_array($source_type,['image','voice','video','thumb'])){
dd('文件类型错误');
}
// echo empty(0);
empty($req['page'])?$page=1:$page=$req['page'];
if($req['page']<=0){
dd('你这个页数很猖狂');
}
$pre_page=$page-1;
$pre_page <=0 && $pre_page =1;
$next_page=$page+1;
// dd($page);
//获取素材列表接口
$url='https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token='.$this->tools->get_access_token();
$data=[
'type'=>$source_type,
'offset'=>$page==1?0:($page-1)*20,
'count'=>20
];
$re=$this->tools->curl_post($url,json_encode($data));
// dd($re);
也可以存入redis
$this->tools->redis->set('source_info_voice',$re);
用的时候从reids拿出来
$re=$this->tools->redis->get('source_info_voice');
获取永久素材
https://api.weixin.qq.com/cgi-bin/material/get_material?access_token=ACCESS_TOKEN
{
“media_id”:MEDIA_ID
}
还是通过工具来拿到。
$re=$this->tools->curl_post($url,json_encode(['media_id'=>$media_id]));