1. 程式人生 > >php把 圖片上傳到 圖片服務器

php把 圖片上傳到 圖片服務器

str sting exec pen pan 允許 _id ont scrip

圖片服務器代碼

<?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;  
}

php把 圖片上傳到 圖片服務器