接口开发中,好多时候图片的上传是通过先将图片转成二进制并生成Base64编码然后POST给API接口的,最近在帮客户开发阿里云的域名认证模板的接口,认证过程中需要上传证件,原本上传图片的这种API开发过好多,但今天怎么传,阿里云接口返回信息:“图片被损坏,请更新图片重新上传” ,研究来研究去,自己编码的base64没有错误,转成图片一切正常,没有办法吃饭,出去转了一圈,回家后细细研究下自己的这个函数,后来想会不会阿里要求的字符串不能分割呀,平时分割成一段段的,再转换成图片时是没有什么影响的,后来把分割的这个函数删除掉,重新提交了一个认证,几分钟后收到阿里云邮件,认证成功,到此可以确定就是分割造成的问题了,前面说这种分割对于再次转换成图片没啥影响,对于新网域名认证模板的证件提交这样分割也是没啥影响的,因为我一直用着的,话不多说,把函数分享给大家!
$img = '../../UserFiles/domainname/ali_20181127211537.jpg'; $base64_img = base64EncodeImage($img); echo $base64_img; function base64EncodeImage ($image_file) { $base64_image = ''; $image_info = getimagesize($image_file); $image_data = fread(fopen($image_file, 'rb'), filesize($image_file)); //chunk_split把字符串分割成一段段的了。不影响正常转换成图片, //$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data)); //新网可以直接用下面的这种chunk_split把字符串分割成一段段的了。 //$base64_image = chunk_split(base64_encode($image_data)); //阿里云只能用下面这种不能有任何分割的字符串POST数据给接口 $base64_image = base64_encode($image_data); return $base64_image; }
最新评论
感谢
能不能屏蔽掉刷流量的,统计工具显示全部都是
路过学习了
好像不太行啊 加载不出来啊
好文章
是否可以 实现 判断手机端跳转 而网址不变呢
你好
感谢分享,我也遇到这个了,根据你的提示,屏蔽掉了