图片上传--base64
<?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的更多相关文章
- php图片上传base64数据编码。
/** * base64图片上传 */ function IdImg($base64_img = ''){ $up_dir = 'upload/';//存放在当前目录的upload文件夹下 if(!f ...
- 移动端图片上传base64编码
$base64 = "/9j/4AAQSkZJRgABAQEAkACQAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAA ...
- ios base64图片上传失败问题
今天做图片上传,后台用的是base64解密图片二进制文件,以前都是用表单上传来解决图片上传的,现在后台没有人改,所以研究下base64上传. 需要将图片base64加密,但是调用 [data base ...
- 利用cropper插件裁剪本地图片,然后将裁剪过后的base64图片上传至七牛云空间
现在做的项目需要做一些图片处理,由于时间赶急,之前我便没有处理图片,直接将图片放在input[type=file]里面,以文件的形式提交给后台,这样做简直就是最低级的做法,之后各种问题便出来了,人物头 ...
- file标签 - 图片上传前预览 - FileReader & 网络图片转base64和文件流
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...
- 前端上传 base64 编码图片到七牛云存储
参考文档 如何上传base64编码图片到七牛云 调试过程 文档中分别有 java 和 html 的 demo,可以根据文档示例调试. 下面是我调试的过程,可以作为参考,特别注意的是,如果需要给文件起名 ...
- tp5 base64 图片上传
/** * 保存图片 */ public function uploads($value='') { // $file = base64_decode(request()->file('imag ...
- js实现图片上传预览功能,使用base64编码来实现
实现图片上传的方法有很多,这里我们介绍比较简单的一种,使用base64对图片信息进行编码,然后直接将图片的base64信息存到数据库. 但是对于系统中需要上传的图片较多时并不建议采用这种方式,我们一般 ...
- ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)
ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64) 七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/ ...
随机推荐
- mac 终端连接服务器报错
今天在连接虚拟机服务器时突然报了一个 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!的错误.  会出现这个错误的原因是在第一次进行SSH连接时,会生 ...
- pymongo 用户密码连接
# db mongodbdb_mongo_attr = { 'host': '*', 'port': 27, 'database':'tease', 'username':'*v', 'passwor ...
- Java基础知识笔记第三章:运算符表达式语句
算术运算符与表达式 操作符 描述 例子 + 加法 - 相加运算符两侧的值 A + B 等于 30 - 减法 - 左操作数减去右操作数 A – B 等于 -10 * 乘法 - 相乘操作符两侧的值 A * ...
- 【转】postgres数据库创建索引
一.索引的类型: PostgreSQL提供了多 种索引类型:B-Tree.Hash.GiST和GIN,由于它们使用了不同的算法,因此每种索引类型都有其适合的查询类型,缺省时,CREATE INDEX命 ...
- MFC中写入汉语到文本文档
目录 1.首先要引入头文件 2.在打开文件后,要进行设置,然后在关闭文档时,进行设置的后处理 3.输出的文本 1.首先要引入头文件 #include <locale> 2.在打开文件后,要 ...
- 日常使用SqlServer的笔记
表操作 查表大小 sp_spaceused 表名 修改表名 ALTER TABLE table RENAME TO NEW_TABLE_NAME; 修改列名 不支持 ALTER TABLE table ...
- eclipse中使用maven创建项目JDK版本默认是1.5
1. 修改maven的settings.xml文件. 添加以下行,jdk版本改为自己需要的版本: <profile> <id>jdk-1.7</id> <ac ...
- C++函数的理解思考
函数指针调用方式 void testmy(int k) { cout << "testzhixing " <<k << endl; } int ...
- Linux 运维常用命令
参考: https://segmentfault.com/a/1190000009745139 http://blog.51cto.com/xuqq999/774714 .查看有多少个IP访问: aw ...
- 初识Prometheus
安装Prometheus Server Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖.用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动Prom ...