前台传图片的base64格式,后台处理方式
//处理图片信息 返回对应的路径
public function uploadBaseIma($imgArr){
$result = array();
//将路径直接设置在uploads下
if($imgArr){
foreach($imgArr as $k => $v){
if($v){
//判断上传的是否为原地址
$a = preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $v);
if($a){
//是就存储不变,将文件路径存储
$b = substr($v,36);
$result[$k] = $b;
}else{
//不是就上传图片
$address = $this->baseChangeImg($v);
$result[$k] = $address;
}
}else {
return array();
}
}
return $result;
}
}
//base64转化为本地图片
public function baseChangeImg($base)
{
//匹配出图片的格式
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base, $result)) {
$type = $result[2];
$path = '/base' . date('Ymd', time()) . "/";
$new_file = public_path('uploads') . $path;
if (!file_exists($new_file)) {
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($new_file, 0700);
}
$name = uniqid() . ".{$type}";
$new_file = $new_file . $name;
if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base)))) {
return $path . $name;
} else {
return false;
}
}
}
注:
上面uploadBaseIma方法中截取的36是'https://jiankang.test123.com/uploads';网址的长度,改进后可以这样
public static $urlAll; //静态变量
public function __construct(){
$server_name = $_SERVER['SERVER_NAME'];
self::$urlAll = 'https://'.$server_name.'/uploads';//重组成对应项目的网址
}
声明静态变量$urlAll给其赋值需要使用的网址
在uploadBaseIma方法中
$urlAll = self::$urlAll;
$num = strlen($urlAll);
$b = substr($v,$num);
将$b进项替换 实现动态更换网址
//处理图片信息 返回对应的路径
public function uploadBaseIma($imgArr){
$result = array();
//将路径直接设置在uploads下
if($imgArr){
foreach($imgArr as $k => $v){
if($v){
//判断上传的是否为原地址
$a = preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $v);
if($a){
//是就存储不变,将文件路径存储
$urlAll = self::$urlAll;
$num = strlen($urlAll);
$b = substr($v,$num);
$result[$k] = $b;
}else{
//不是就上传图片
$address = $this->baseChangeImg($v);
$result[$k] = $address;
}
}else {
return array();
}
}
return $result;
}
}

 

base64图片上传,并根据不同项目进行智能修改图片的更多相关文章

  1. 图片上传并显示(兼容ie),图片大小判断

    图片上传并显示(兼容ie),图片大小判断 HTML <div id="swf" style="margin: 0 auto;text-align: center;& ...

  2. c#中富文本编辑器Simditor带图片上传的全部过程(项目不是mvc架构)

    描述:最近c#项目中使用富文本编辑器Simditor,记录一下以便以后查看. 注:此项目不是MVC架构的. 1.引用文件 项目中引用相应的css和js文件,注意顺序不能打乱,否则富文本编辑器不会正常显 ...

  3. spring boot图片上传至远程服务器并返回新的图片路径

    界面上传图片时考虑到可能会有用户的图片名称一致,使用UUID来对图片名称进行重新生成. //UUIDUtils public class UUIDUtils { public static Strin ...

  4. 七牛--关于图片上传方向不统一的问题--主要关于图片EXIF信息中旋转参数Orientation的理解

    [图片引用方向纠正]直接在图片后面添加 ?imageMogr/auto-orient eg:http://data.upfitapp.com/data/2016/10/18/1629114767606 ...

  5. 【转载】【JAVA秒会技术之图片上传】基于Nginx及FastDFS,完成图片的上传及展示

    基于Nginx及FastDFS,完成商品图片的上传及展示 一.传统图片存储及展示方式 存在问题: 1)大并发量上传访问图片时,需要对web应用做负载均衡,但是会存在图片共享问题 2)web应用服务器的 ...

  6. PHP结合Ueditor并修改图片上传路径 微信小程序 拼接域名显示图片

    前言 在使用UEditor编辑器时,一般我们都是需要修改默认的图片上传路径的,下面是我整理好的修改位置和方法供大家参考. 操作 Ueditor PHP版本本身自带了一套上传程序,我们可以在此基础中,找 ...

  7. 小程序实现图片上传,预览以及图片base64位处理

    最近一段时间在做小程序项目,第一期功也完工了.需要好好总结一下经验,把项目中遇到的问题好好总结一下,遇到的问题,踩过的坑.今天写一个小程序实现图片上传,预览,以及删除,图片base64位处理.下面就是 ...

  8. 关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)

    一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...

  9. php实现base64图片上传方式实例代码

    <?php /** * base64图片上传 * @param $base64_img * @return array */ header("content-type:text/htm ...

随机推荐

  1. spark集群安装

    cd到conf中去 修改名字   mv spark-env.sh.template spark-env.sh 并且修改内容 添加: export JAVA_HOME=/root/java/jdk1.8 ...

  2. SQL Server2012在软件开发中的一些新特性

    官方给出了一大堆SQL2012相对于SQL2008R2的新特性,但是大多数对于普通开发人员来说都是浮云,根本用不到,下面就说说一些对于开发人员来说比较有用的新特性.   一.在SQL Server中终 ...

  3. Java EE启示录

    前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓“启示录”,就是这个意思. 一.Java EE是什 ...

  4. Android自定义view双缓存技术

    自定义一个写字板来帮助理解双缓存.如果不使用双缓存那么用户只能看到绘制的最后一笔的效果.因为在不断调用invalidate(),未保存的绘制过程会消失. package newviews; impor ...

  5. 【Demo】CSS3 2D转换

    2D转换transform 2D变换方法: translate() 根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动. div { transform: translate(50px,1 ...

  6. st表模板

    http://blog.csdn.net/insistgogo/article/details/9929103 这篇博客讲解的很详细了,求区间最大值也可以用st表,时间复杂度O(n log(n)),查 ...

  7. bash echo color

    原文:https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux $ ; i ...

  8. 遍历jsonArray和jsonObject

    遍历jsonArray String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'}]&q ...

  9. C#外部类、内部类(嵌套类)之间的成员访问特点

    最近程序中需要用到多线程工作下的单例模式.而其多种实现方法中,利用内部类实现懒汉模式是一种值得推荐的方式.顺便也就对内部类和外部类之间的关系做了一下研究,总结如下(理解不困难,不粘贴代码了,有需要的留 ...

  10. 用I/O口模拟总线时序

    在做总线通信过程中,我们很少会用到这样方法,一般在我们选择MCU的时候都会带有你所需要的通信接口.但是,对于一些简单的通信应该用的场合,一般在一些传感器的数据通信过程中,传感器厂商会将通信协议做一些改 ...