BASE64 接收图片上传到阿里云OSS

本文介绍了一种将Base64编码的图片数据上传至阿里云OSS存储服务的方法。通过临时将图片保存在本地,再从本地上传至OSS的方式实现了图片的有效存储,并附带了完整的ThinkPHP代码实现。
            $pic = I('post.pic');
            if($pic){
                if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $pic, $result)){
                    $type = $result[2];
                    if(in_array($type,array('pjpeg','jpeg','jpg','gif','bmp','png'))){
                        $pic_name = time().rand(1,1000).'.'.$type;
                        $file = './Public/headPic/'.$pic_name;
                        $object = 'head-image/'.$pic_name;
                        if(file_put_contents($file, base64_decode(str_replace($result[1], '', $pic)))){
                            vendor('aliyun.autoload');
                            $ossClient = new \OSS\OssClient(C('accessKeyId'),C('accessKeySecret'),C('endpoint'));
                            try{
                                $getOssInfo = $ossClient->uploadFile(C('bucket'),$object,$file);
                                $getOssPdfUrl = $getOssInfo['info']['url'];
                                if($getOssPdfUrl){
                                    unlink($file);
                                    $data['pic'] = 'http://***/head-image/'.$pic_name;
                                }
                            }catch(OssException $e){
                                printf($e->getMessage() . "\n");
                                return;
                            }
                        }else
                            $this->returnResult(false,array(),'图片上传失败');
                    }else
                        $this->returnResult(false,array(),'图片类型错误');
                }else
                    $this->returnResult(true,array(),'图片编码错误');
			}

代码是搜到的  做了点修改 改成app常用的base64 传到后端

查了很多资料 不能直接上传到oss  必须经过本地这一环节 所以最后操作完把本地图unlink一下

$file 是存在本地的图片路径

$object是oss里空间下的路径

(开源中国好像不能上传文件 我的是thinkphp里写的 要sdk的私我)

转载于:https://my.oschina.net/ppaoyu/blog/1595675

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值