PHP处理base64编码字符串
- 接收前端传过来的base64编码后的字符串, 如果是json字符串, 那么PHP使用file_get_contents('php://input'); 来接收. 本次这里是以post传参的形式传base64字符串.
$photo = \Yii::$app->request->post('photo', ''); //yii接收,photo变量存储的即base64字符串
- 设置base64转成图片后要保存的文件名 以及 路径
$filename = date('YmdHis').rand(1111,9999).'.png';
$path = \Yii::$app->basePath.'/web/temp';if(!is_dir($path)){
mkdir($path, 0777, 'true');
}$imagePath = $path.'/'.$filename; //文件的完整路径(本地的)
- 判断是否有逗号, 如果有就截取后半部分
if(strstr($photo, ',')){
$photo = explode(',', $photo);
$photo = $photo[1];
} - base64生成图片
$r = file_put_contents($imagePath, base64_decode($photo)); //$r接收的是返回的字节数, 至此本地成功生成图片
- 接下来是将本地图片保存至oss上, 并删除本地图片
$photo_url = $this->uploadImg($imagePath); //调用上传oss方法
//删掉本地图片
unlink($imagePath);上传oss方法如下(需要下载ossSDK并引入,此处省略)
public $access_key = '你的access_key';
public $secret_key = '你的secret_key';
public $domain = 'http://oss-cn-shenzhen.aliyuncs.com'; //选距离最近的域名
public $bucket = '你的bucket';
//$localdir是图片的本地路径, 也就是$imagePath
public function uploadImg($localdir='')
{
include \Yii::$app->basePath.'extensions/aliyun-oss-php-sdk-2.2.4/autoload.php'; //将ossSDK包放在extensions目录下, 然后引入autoload.php, 还有命名空间. 即可使用.
//把文件上传到oss上
try{
$object = md5(time().uniqid()).'.png';
$ossClient = new OssClient($this->access_key, $this->secret_key, $this->domain);
$exist = $ossClient->doesObjectExist($this->bucket, $object);
if(!$exist){
$ossClient->uploadFile($this->bucket, $object, $localdir);
} $domain = explode('//', $this->domain);
$url = 'http://'.$this->bucket.'.'.$domain[1].'/'.$object; //拼接访问路径
// $data = [
// 'status' => 0,
// 'msg' => 'success',
// 'url' => $url,
// ];
return $url;
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
} - 附上base64的原理讲解:https://blog.csdn.net/wo541075754/article/details/81734770
PHP处理base64编码字符串的更多相关文章
- 图片和base64编码字符串 互相转换,图片和byte数组互相转换
图片和base64编码字符串 互相转换 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; ...
- Base64编码字符串时数据量明显变大
那就是当把byte[]通过Convert.ToBase64String转换成Base64编码字符串时数据量明显变大 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需 ...
- 将图片转化为base64编码字符串
pom依赖 <dependency> <groupId>org.ops4j.base</groupId> <artifactId>ops4j-base- ...
- CKEditor图片上传问题(默认安装情况下编辑器无法处理图片),通过Base64编码字符串解决
准备做一个文章内容网站,网页编辑器采用CKEditor,第一次用,默认安装情况下,图片无法插入,提示没有定义上传适配器(adapter),错误码提示如下: 根据提示,在官网看到有两种途径:一使用CKE ...
- .NET实现字符串base64编码
using System; using System.Text; using System.IO; using System.Security; using System.Security.Crypt ...
- js将图片转为base64编码,以字符串传到后台存入数据库
(前台在中approve_edit.html中,后台不变) 链接参考:http://www.cnblogs.com/Strom-HYL/p/6782176.html 该链接文中并没有用到easyUI的 ...
- URL安全的Base64编码
Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...
- BASE64编码和解码(VC源代码) 并 内存加载 CImage 图像
BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本.完整的BASE64定义可见 RFC1421和 RFC2045.编码后的数据比原始数据略长,为原来的4/3.在电子 ...
- 获取图片base64编码的几种方法
前文中我们聊了 Data URI 和 base64编码,稍微回顾下.base64编码 是将数据用 64 个可打印的字符进行编码的方式,任何数据底层实现都是二进制,所以都可以进行 base64编码,ba ...
随机推荐
- pymysql连接和操作Mysql数据库
pymysql 一.概要 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库, 二.PyMySQL 安装 pip install pymysql 三.操作流程 创建c ...
- 针对Web的信息搜集
信息收集(Information Gathering),信息收集是指通过各种方式获取所需要的信息,在整个渗透测试环节中,信息搜集是整个渗透过程中最为重要的一环,信息搜集可占据整个渗透测试80%左右的工 ...
- Spring与Web框架(例如Spring MVC)漫谈——关于Spring对于多个Web框架的支持
在看Spring MVC的官方文档时,最后一章是关于Spring对于其它Web框架的支持(如JSF,Apache Struts 2.x,Tapestry 5.x),当然Spring自己的MVC框架Sp ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- -bash: /usr/librxec/grepconf.sh:Nosuch file or directory
最近修改/etc/profile文件时,不小心在后面添加了source /etc/profile,导致使用xshell登录远程linux的时候出现下面的信息, 一直无法进入linux,将profile ...
- MQTT图形化客户端比较
1 MQTT.fx (1)协议支持 TCP(tcp) TLS(tls) (2)特点 界面美观,操作便捷 不支持WebSocket协议 基于java开发 支持代理 通过Nashorn Engine的JS ...
- 安川机器人Yaskawa
安川机器人自动回原点 1. 判断机器人是否在安全位置 (立方体干涉区) 2. 读取机器人当前位置 GETS PX000 $PX001 读取基座标下的机器人当前位置并放到位置型变量P000中 $P ...
- vi学习笔记
dd 删除一行 de删除光标后面的单词 o向下插入一行 O向上插入一行 y复制 yy复制一行 ye复制光标后面的单词 p粘贴 == 代码自动布局 批量注释 ctrl + v , 输入大写I, 选 ...
- STM32工程模版
STM32工程模版,看过来 ST库源码去官方下载 创建工程目录 doc:存放说明文档 lib:存放库文件 listing:存放编译产生的中间文件 output:存放生成的文件 project:存放工程 ...
- jQuery EasyUI 拖放 – 基本的拖动和放置
jQuery EasyUI 拖放 - 基本的拖动和放置 在jQuery EasyUI中,可以实现HTML元素的基本拖动和放置. <div id="dd1" class=&qu ...