• 接收前端传过来的base64编码后的字符串, 如果是json字符串, 那么PHP使用file_get_contents('php://input'); 来接收. 本次这里是以post传参的形式传base64字符串.

    1. $photo = \Yii::$app->request->post('photo', ''); //yii接收,photo变量存储的即base64字符串
  • 设置base64转成图片后要保存的文件名 以及 路径
    1. $filename = date('YmdHis').rand(1111,9999).'.png';
    2. $path = \Yii::$app->basePath.'/web/temp';
    1. if(!is_dir($path)){
      mkdir($path, 0777, 'true');
      }
    1. $imagePath = $path.'/'.$filename; //文件的完整路径(本地的)
  • 判断是否有逗号, 如果有就截取后半部分
    1. if(strstr($photo, ',')){
    2. $photo = explode(',', $photo);
    3. $photo = $photo[1];
    4. }
  • base64生成图片
    1. $r = file_put_contents($imagePath, base64_decode($photo)); //$r接收的是返回的字节数, 至此本地成功生成图片
  • 接下来是将本地图片保存至oss上, 并删除本地图片
    1. $photo_url = $this->uploadImg($imagePath); //调用上传oss方法
    2. //删掉本地图片
    3. unlink($imagePath);

    上传oss方法如下(需要下载ossSDK并引入,此处省略)

    1. public $access_key = '你的access_key';
    2. public $secret_key = '你的secret_key';
    3. public $domain = 'http://oss-cn-shenzhen.aliyuncs.com'; //选距离最近的域名
    4. public $bucket = '你的bucket';
    5. //$localdir是图片的本地路径, 也就是$imagePath
    6. public function uploadImg($localdir='')
    7. {
    8. include \Yii::$app->basePath.'extensions/aliyun-oss-php-sdk-2.2.4/autoload.php'; //将ossSDK包放在extensions目录下, 然后引入autoload.php, 还有命名空间. 即可使用.
    9. //把文件上传到oss上
    10. try{
    11. $object = md5(time().uniqid()).'.png';
    12. $ossClient = new OssClient($this->access_key, $this->secret_key, $this->domain);
    13. $exist = $ossClient->doesObjectExist($this->bucket, $object);
    14. if(!$exist){
    15. $ossClient->uploadFile($this->bucket, $object, $localdir);
    16. }
    17.  
    18. $domain = explode('//', $this->domain);
    19. $url = 'http://'.$this->bucket.'.'.$domain[1].'/'.$object; //拼接访问路径
    20. // $data = [
    21. // 'status' => 0,
    22. // 'msg' => 'success',
    23. // 'url' => $url,
    24. // ];
    25. return $url;
    26. } catch(OssException $e) {
    27. printf(__FUNCTION__ . ": FAILED\n");
    28. printf($e->getMessage() . "\n");
    29. return;
    30. }
    31. }
  • 附上base64的原理讲解:https://blog.csdn.net/wo541075754/article/details/81734770

PHP处理base64编码字符串的更多相关文章

  1. 图片和base64编码字符串 互相转换,图片和byte数组互相转换

    图片和base64编码字符串 互相转换 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; ...

  2. Base64编码字符串时数据量明显变大

    那就是当把byte[]通过Convert.ToBase64String转换成Base64编码字符串时数据量明显变大 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需 ...

  3. 将图片转化为base64编码字符串

    pom依赖 <dependency> <groupId>org.ops4j.base</groupId> <artifactId>ops4j-base- ...

  4. CKEditor图片上传问题(默认安装情况下编辑器无法处理图片),通过Base64编码字符串解决

    准备做一个文章内容网站,网页编辑器采用CKEditor,第一次用,默认安装情况下,图片无法插入,提示没有定义上传适配器(adapter),错误码提示如下: 根据提示,在官网看到有两种途径:一使用CKE ...

  5. .NET实现字符串base64编码

    using System; using System.Text; using System.IO; using System.Security; using System.Security.Crypt ...

  6. js将图片转为base64编码,以字符串传到后台存入数据库

    (前台在中approve_edit.html中,后台不变) 链接参考:http://www.cnblogs.com/Strom-HYL/p/6782176.html 该链接文中并没有用到easyUI的 ...

  7. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  8. BASE64编码和解码(VC源代码) 并 内存加载 CImage 图像

      BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本.完整的BASE64定义可见 RFC1421和 RFC2045.编码后的数据比原始数据略长,为原来的4/3.在电子 ...

  9. 获取图片base64编码的几种方法

    前文中我们聊了 Data URI 和 base64编码,稍微回顾下.base64编码 是将数据用 64 个可打印的字符进行编码的方式,任何数据底层实现都是二进制,所以都可以进行 base64编码,ba ...

随机推荐

  1. Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子

    [学习笔记] Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子在eclipse oxygen上创建一个普通的java项目,然后把spark-a ...

  2. IDEA插件之JProfiler

    1.是什么?来用干嘛的? 一个商业授权的Java剖析工具. 用来剖析程序内存.CPU使用情况,找到性能瓶颈,快速定位问题所在. 2.IDEA安装JProfiler插件 (1)File -> Se ...

  3. 获取 request 中用POST方式"Content-type"是"application/x-www-form-urlencoded;charset=utf-8"发送的 json 数据

    request中发送json数据用post方式发送Content-type用application/json;charset=utf-8方式发送的话,直接用springMVC的@RequestBody ...

  4. FGL内置函数大全

    内置功能摘要: 内置的功能是什么?内置的功能列表支持的功能列表键代码表另请参阅:效用函数,变量,函数,操作符,内置类. ---------------------------------------- ...

  5. StoneTab标签页CAD插件 3.0.0

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  6. IOC+EF+Core搭建项目框架(三)

    /// <summary> /// 表示类别映射配置 /// </summary> public partial class sys_UserMap : NopEntityTy ...

  7. python之atexit模块的使用

    python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作. atexit 按 ...

  8. CentOS自动备份MySql

    1.确认Crontab是否安装 service crond startcrontab -l 2.编写备份脚本 cd mkdir backup cd backup vim auto.sh /usr/bi ...

  9. host文件简介及修改后不能保存解决方法

    一.文件概述 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先 ...

  10. 如何入门Pytorch之三:如何优化神经网络

    在上一节中,我们介绍了如何使用Pytorch来搭建一个经典的分类神经网络.一般情况下,搭建完模型后训练不会一次就能达到比较好的效果,这样,就需要不断的调整和优化模型的各个部分.从而引出了本文的主旨:如 ...