php怎么把图片上传到图片服务器?
图片服务器代码
<?php/** * 图片服务器上传api接口 * by zx * date 2016-04-28 */header('content-type:text/json');//准备参数$size = 10485760; //图片大小 单位字节$type = array('image/jpeg', 'image/gif', 'image/png'); //允许上传的图片类型//验证数据完整性if(isset($_files['imgs']) && isset($_post['folder'])){ switch($_post['folder']) { case 'goods_img': $path = 'goods_img/'.date('y-m-d').'/'; break; case 'goods_sku': $path = 'goods_sku/'.date('y-m-d').'/'; break; default: $path = 'default/'.date('y-m-d').'/'; break; } if (!is_dir($path)) { //第三个参数是“true”表示能创建多级目录,iconv防止中文目录乱码 mkdir(iconv("utf-8", "gbk", $path),0777,true); } //开始图片上传 $result = upload($path, $size, $type);}else{ //参数缺失 $result = array('code' => 0, 'msg' => '参数缺失');}echo json_encode($result);/** * upload 图片上传 * @param $path 图片上传路径(一级目录) * @param $size 图片上传大小 单位字节 * @param $type 允许上传的图片类型 * @return array code(0==上传失败, 1==上传成功) path==上传成功路径 name==上传成功图片名称 */function upload($path, $size, $type){ $file = $_files['imgs']; if($file['error'] > 0){ switch($file['error']){ case 1: return array('code' => 0, 'msg' => '上传文件超过php配置文件中 upload_max_filesize的值'); break; case 2: return array('code' => 0, 'msg' => '上传文件超过php配置文件中 post_max_size的值'); break; case 3: return array('code' => 0, 'msg' => '上传失败,图片数据缺损'); break; case 4: return array('code' => 0, 'msg' => '没有文件被上传'); break; case 6: return array('code' => 0, 'msg' => '上传失败,找不到临时目录'); break; default: return array('code' => 0, 'msg' => '未知错误'); break; } } if($file['size'] > $size){ return array('code' => 0, 'msg' => '上传的图片大小超过限制的'.$size.'字节'); } if(!in_array($file['type'], $type)){ return array('code' => 0, 'msg' => '不是正确的图片类型'); } $suffix = strrchr($file['name'], '.'); $newname = md5(time().uniqid().mt_rand(1,999)).$suffix; if(!file_exists($path)){ mkdir($path); } $path = rtrim($path, '/'); $p = $path.'/'.$newname; if(move_uploaded_file($file['tmp_name'], $p)){ return array('code' => 1, 'msg' => '图片上传成功', 'path' => $path, 'name' => $newname); }else{ return array('code' => 0, 'msg' => '图片上传失败'); }}
前台代码
//上传商品图片 $('#upload_goods_img').change(function(){ //上传商品图片数量 var small_goods_img_number = $('.small_number').length if(small_goods_img_number == 5){ error('最多上传五张图片');return; } $('#index').val(++small_goods_img_number); var formdata = new formdata($( "#goods_img" )[0]); // var url = "{:u('uploadimg/uploadgoodsimg')}"; var url = "{:u('uploadimg/upload_img')}"; formdata.append("img_name", "goods_img"); formdata.append("folder", "goods_img"); formdata.append("type", "goods_img"); $.ajax({ type:'post', url:url, data:formdata, cache: false, contenttype: false, processdata: false, success:function(data){ if(data.code){ //大图 var img_url = "{:c('img_server_url')}"; $('#upload_goods_img_big').attr('src', img_url+data.msg.goods_img_path); //小图 addgoodsimgsmall(data.msg); }else{ error(data.msg); } } }); });
php代码
/** * 上传图片到服务器 * @return [type] [description] */ public function upload_img() { if(is_post){ $url = c('img_server_url').'uploadimg.php'; //图片api服务器 $data = i('post.'); $img_name = $data['img_name']; if(!$img_name){ $ajax['msg'] = 'file名称有误'; }else{ $tmpname = $_files[$img_name]['name']; //上传上来的文件名 $tmpfile = $_files[$img_name]['tmp_name']; //上传上来的临时存储路径 $tmptype = $_files[$img_name]['type']; //上传上来的文件类型 $folder = $data['folder']; //存储路径 //执行上传 $obj = json_decode(upload_file($url, $tmpname, $tmpfile, $tmptype, $folder)); if($obj->code){ $path = $obj->path.'/'.$obj->name; if($data['type'] == 'goods_img'){ //商品图片 $model = d('goodsimg'); $goods_img_data['img_path'] = $path; $goods_img_data['index'] = i('index'); $goods_img_data['create_time'] = time(); $goods_img_id = $model->add($goods_img_data); if($goods_img_id){ $ajax['code'] = '1'; $ajax['msg'] = [ 'id' => $goods_img_id, 'goods_img_path' => $path, ]; }else{ $ajax['msg'] = '上传失败'; } }else if($data['type'] == 'goods_sku'){ //商品sku $model = d('goodssku'); $goods_sku_img_data['sku_img_path'] = $path; $goods_sku_img_data['sku_distinguish'] = $data['sku_distinguish']; $goods_sku_img_data['price'] = $data['sku_price']; $goods_sku_img_data['create_time'] = time(); $goods_sku_img_id = $model->add($goods_sku_img_data); if($goods_sku_img_id){ $ajax['code'] = '1'; $ajax['msg'] = [ 'id' => $goods_sku_img_id, 'goods_sku_img_path' => $path, 'sku_distinguish' => $data['sku_distinguish'], 'price' => $data['sku_price'] ]; }else{ $ajax['msg'] = '上传失败'; } } }else{ $ajax['msg'] = $obj->msg; } } $this->ajaxreturn($ajax); } }
上传文件curl
/** * curl上传文件 * * @param unknown $url * @param unknown $filename * @param unknown $path * @param unknown $type */ function upload_file($url,$filename,$path,$type, $folder){ //php 5.5以上的用法 if (class_exists('\curlfile')) { $data = array( 'imgs' => new \curlfile(realpath($path),$type,$filename), 'folder' => $folder ); } else { $data = array( 'imgs'=>'@'.realpath($path).";type=".$type.";filename=".$filename, 'folder' => $folder ); } $ch = curl_init(); curl_setopt($ch, curlopt_url, $url); curl_setopt($ch, curlopt_post, true); curl_setopt($ch, curlopt_postfields, $data); curl_setopt($ch, curlopt_header, false); curl_setopt($ch, curlopt_returntransfer, true); $return_data = curl_exec($ch); $return_data = trim($return_data); curl_close($ch); return $return_data; }
更多相关技术文章,请访问!