<?php
defined('BASEPATH') OR exit('No direct script access allowed');
include_once (APPPATH . "controllers/admin/Auth.php");
include_once (APPPATH.'libraries/PicUpload.php');
class goodsInfo extends Auth {
//产品修改
public function edit(){
$tid=$this->newrow['tid'];
//获取待修改的商品详细图片信息
$ree['info']=$this->db->select('*')->from('goods_info')->where(array('tid'=>$tid))->get()->result_array();
//根据id从硬盘上删除产品原图及缩略图和产品成分图片
$pic=$this->db->select('ingredients,origin_pic,home_pic,product_cat_pic,detail_pic,cart_pic')
->from('goods_info')
->where(array('tid'=>$tid))
->get()
->result_array();
$picture_upload=new PicUpload();
if(!empty($this->newrow['origin_pic'])){
unlink(OMG.ORIGIN.$pic[]['origin_pic']);
unlink(OMG.HOME.$pic[]['home_pic']);
unlink(OMG.PRODUCT.$pic[]['product_cat_pic']);
unlink(OMG.DETAIL.$pic[]['detail_pic']);
unlink(OMG.CART.$pic[]['cart_pic']); $pic=$_POST['origin_pic'];
//文件上传保存路径
$image_file=OMG.ORIGIN; $upload_url=$picture_upload->pUpload($pic,'pic2',$image_file);
$origin_pic=$upload_url['url_pic'];
$origin_thumb_pic=OMG.ORIGIN.$origin_pic;
$thumb_name=$upload_url['pri'];
if(!$upload_url){
responseMsg ( , "图片上传失败!", null, , $this->prefix );
$this->db->trans_rollback();
return FALSE;
} for($i=;$i<;$i++){
if($i==){
$width = ;
$height = ;
//缩略后的保存路径
$save_home_pic=OMG.HOME."{$thumb_name}.png";
$home_pic="{$thumb_name}_thumb.png";
//生成缩略图1
//$origin_thumb_pic 要缩略的原图路径
$this->dealthumb($origin_thumb_pic,$save_home_pic,$width,$height);
}elseif($i==){
$width = ;
$height = ;
//缩略后的保存路径
$save_product_cat_pic=OMG.PRODUCT."{$thumb_name}.png";
$product_cat_pic="{$thumb_name}_thumb.png";
//生成缩略图2
//$origin_thumb_pic 要缩略的原图路径
$this->dealthumb($origin_thumb_pic,$save_product_cat_pic,$width,$height);
}elseif($i==){
$width = ;
$height = ;
//缩略后的保存路径
$save_detail_pic=OMG.DETAIL."{$thumb_name}.png";
$detail_pic="{$thumb_name}_thumb.png";
//生成缩略图3
//$origin_thumb_pic 要缩略的原图路径
$this->dealthumb($origin_thumb_pic,$save_detail_pic,$width,$height);
}else{
$width = ;
$height= ;
//缩略后的保存路径
$save_cart_pic=OMG.CART."{$thumb_name}.png";
$cart_pic="{$thumb_name}_thumb.png";
//生成缩略图4
//$origin_thumb_pic 要缩略的原图路径
$this->dealthumb($origin_thumb_pic,$save_cart_pic,$width,$height);
}
}
}else {
$origin_pic = $ree['info'][]['origin_pic'];
$home_pic = $ree['info'][]['home_pic'];
$product_cat_pic = $ree['info'][]['product_cat_pic'];
$detail_pic = $ree['info'][]['detail_pic'];
$cart_pic = $ree['info'][]['cart_pic']; //添加图片1
$pic = $_POST['ingredients'];
//文件上传保存路径
$image_file = OMG . INGREDIENTS;
}
responseMsg ( , "success",null, ,$this->prefix );
}
/*
* 生成缩略图
* @param $path 原图的本地路径
* @param $newPath 缩略图存储路径
*/
private function dealthumb($path,$newPath,$width,$height){
$config['image_library'] = 'gd2';
$config['source_image'] = $path;
$config['new_image'] = $newPath;
$config['create_thumb'] = TRUE;
//生成的缩略图将在保持纵横比例 在宽度和高度上接近所设定的width和height
$config['maintain_ratio'] = TRUE;
$config['width'] = $width;
$config['height'] = $height;
//载入图像处理类库
$this->load->library('Image_lib');
$this->image_lib->initialize($config);
$this->image_lib->resize();
$this->image_lib->clear();
}
}

gmapi\framework\application\libraries\PicUpload.php

<?php
$file = substr( $_SERVER["SCRIPT_FILENAME"], , stripos($_SERVER["SCRIPT_FILENAME"], "framework") );
require_once("{$file}/config.php");
class PicUpload{
/**
* $pic $name $image_file
*/
public function pUpload($pic,$name, $image_file){
$url_pic=array();
//上传图片
if(!empty($pic)){
$url_pic=$this->upload($pic,$name,$image_file);
if(empty($url_pic)){
return false;
}
}
$url=array(
url_pic=>$url_pic['image_name'],
pri=>$url_pic['pri']
);
return $url; }
//字符串转图片
private function upload($base64_image,$name,$image_file){
$file_size=strlen($base64_image); //4.8kb 4925 8k
// 验证文件条件是否符合
if($file_size<= ){ # 未上传文件
return false;
}
if($file_size>= ){ # 图片大于400KB,结束传输
return false;
}
$base64_image = str_replace(' ', '+',$base64_image);//post
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image, $result)){
//匹配成功
if($result[] == 'jpeg'){
$pri=date(YmdHis).$name;
$image_name =$pri .'.png';
}else{
$pri=date(YmdHis).$name;
$image_name =$pri.'.'.$result[];
}
$image_file_1="{$image_file}{$image_name}";
//服务器文件存储路径
//$image_file_1 要写入数据的文件。如果文件不存在,则创建一个新文件。
//base64_decode(str_replace($result[1], '', $base64_image)) 要写入文件的数据。可以是字符串、数组或数据流。
if(file_put_contents($image_file_1, base64_decode(str_replace($result[], '', $base64_image)))){
$data['image_name'] = $image_name;
$data['pri']=$pri;
return $data;
}else{
return false;
}
}else{
return false;
}
}
}

图片上传--base64的更多相关文章

  1. php图片上传base64数据编码。

    /** * base64图片上传 */ function IdImg($base64_img = ''){ $up_dir = 'upload/';//存放在当前目录的upload文件夹下 if(!f ...

  2. 移动端图片上传base64编码

    $base64 = "/9j/4AAQSkZJRgABAQEAkACQAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAA ...

  3. ios base64图片上传失败问题

    今天做图片上传,后台用的是base64解密图片二进制文件,以前都是用表单上传来解决图片上传的,现在后台没有人改,所以研究下base64上传. 需要将图片base64加密,但是调用 [data base ...

  4. 利用cropper插件裁剪本地图片,然后将裁剪过后的base64图片上传至七牛云空间

    现在做的项目需要做一些图片处理,由于时间赶急,之前我便没有处理图片,直接将图片放在input[type=file]里面,以文件的形式提交给后台,这样做简直就是最低级的做法,之后各种问题便出来了,人物头 ...

  5. file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流

    记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...

  6. 前端上传 base64 编码图片到七牛云存储

    参考文档 如何上传base64编码图片到七牛云 调试过程 文档中分别有 java 和 html 的 demo,可以根据文档示例调试. 下面是我调试的过程,可以作为参考,特别注意的是,如果需要给文件起名 ...

  7. tp5 base64 图片上传

    /** * 保存图片 */ public function uploads($value='') { // $file = base64_decode(request()->file('imag ...

  8. js实现图片上传预览功能,使用base64编码来实现

    实现图片上传的方法有很多,这里我们介绍比较简单的一种,使用base64对图片信息进行编码,然后直接将图片的base64信息存到数据库. 但是对于系统中需要上传的图片较多时并不建议采用这种方式,我们一般 ...

  9. ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

    ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...

随机推荐

  1. 【快学springboot】SpringBoot整合Mybatis Plus

    原创声明 本文首发于头条号[Happyjava].Happy的掘金地址:https://juejin.im/user/5cc2895df265da03a630ddca,Happy的个人博客:http: ...

  2. PAT A1135 Is It A Red Black Tree

    判断一棵树是否是红黑树,按题给条件建树,dfs判断即可~ #include<bits/stdc++.h> using namespace std; ; struct node { int ...

  3. Spring学习(五)

    自动装备 1.定义 自动装配(autowiring): 将某个Bean实例中所引用的其它的Bean自动注入到当前Bean实例中 自动装配就是指由Spring来自动地注入依赖对象,无需人工参与. 自动装 ...

  4. 10.MongoDB

    1.安装(1.1):去官方下载最新的包,http://www.mongodb.org/downloads(1.2):然后tar zvxf 解压(1.3):拷贝到相应的文件夹即可2.在Shell里面启动 ...

  5. 「NOIP2009」Hankson 的趣味题

    Hankson 的趣味题 [内存限制:$128 MiB$][时间限制:$1000 ms$] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 Hanks 博士是 BT(Bio-Tec ...

  6. 吴裕雄--天生自然HADOOP操作实验学习笔记:ETL案例

    实验目的 熟悉hadoop生态系统 初步了解大数据点击流分析业务 学会使用hadoop进行数据分析统计 实验原理 hadoop主要有三部分,hdfs做数据存储.mapreduce做数据计算.yarn做 ...

  7. bitcoin01

    bitcoin, blockchain 本文只是初步表面认识比特币的笔记... 详细信息请看相关链接. 比特币除了耗电,耗硬盘存储空间,还有无法预测,无法控制的风险. 1. Satoshi_Nakam ...

  8. Eclipse - 常见问题 - Refresh

    有时候项目代码正确但运行后出现异常,是因为eclipse没有刷新 (如jar包添加了但没用),比较脑慢. 解决方法: clean缓存,或者要多点几次Refresh,或者重启 eclipse.

  9. FTP大量数据(百万级数据)传输尝试

    接上篇<Java FTPClient 大量数据传输的问题(未解决)> 因为数据量过大 FTPClient获取文件列表信息会出现不稳定的问题,找了很多方法都没有解决. 网上找的这一篇文章 h ...

  10. 题解 P2801 【教主的魔法】

    分块入门题,不错的,建议大家做一做 开始学习 先看一下数列分块入门 2 这道题想让我们求区间[l,r]>=c的个数,然后我们可以看到"数列分块入门 2"是求区间[l,r]&l ...