最近在使用wx.uploadImage() JSSDK 上传图片时,正常返回了serverId,但传到PHP端一直报{"errcode":40007,"errmsg":"invalid media_id"}错误
在严格审查代码无误后,百度了很久都没法解决。。。最后的最后终于发现原因!!!
原来是微信开发者工具调用图片上传接口不会返回正确的serverId(media Id),在使用手机查看后,发现 serverId 的确返回的确不同了,传到后端后正确使用接口获取到了图片。。
无语。。
贴一个代码:
JS:
PHP: 使用了Laravel-wechat插件
public function getImageUrl(Request $request){
$app = app('wechat.official_account');
$stream = $app->media->get($request->input('id'));
if ($stream instanceof \EasyWeChat\Kernel\Http\StreamResponse) {
// 以内容 md5 为文件名存到本地
$filename = $stream->save(storage_path().'/app/wechat');
$file=new File(storage_path().'/app/wechat/'.$filename);
$oss_filename = Storage::disk('oss')->putFile('/', $file);
// 自定义文件名,不需要带后缀
// $stream->saveAs('保存目录', '文件名');
return response()->json([
'state' => '0',
'url'=>Storage::url($oss_filename)
]);
}else{
return response()->json($stream,500);
}
}
Leave a Comment