麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > ThinkPHP > 正文

配置Thinkphp3.2支持七牛圖片上傳的方法

2024-09-09 15:20:21
字體:
來源:轉載
供稿:網友

七牛圖片上傳方法我們只要在框架中配置它的接口及上傳的些小細節就可以實現了,下面一起來看一個關于配置Thinkphp3.2支持七牛圖片上傳的方法,希望文章對各位有幫助.

作為php菜鳥,在公司搗鼓的一個基于thinkphp框架項目上要是用七牛(原來有用過C#版本的sdk),現在在官方找到php的官方sdk,最后發現原來Thinkphp已經支持驅動類型是qiniu的文件上傳了.

現在將配置說明一下。

利用七牛云私有空間存儲文件

注冊七牛云,創建空間,將空間設為私有

需要記下的東西:

AK,SK,bucket

在config.php添加:

  1. //七牛上傳文件設置 
  2.     'PICTURE_UPLOAD_DRIVER'=>'Qiniu',    
  3.     //本地上傳文件驅動配置 
  4.     'UPLOAD_LOCAL_CONFIG'=>array(), 
  5.   'UPLOAD_QINIU_CONFIG'=>array
  6.         'accessKey'=>'l3N4q0XCqm0rssaaMTHryZYG-LnKMH'
  7.         'secrectKey'=>'7qPVaeRasasan2TjALqQAjF0h6jOt0D1jF'
  8.         'bucket'=>'yaasasnbao'
  9.         'domain'=>'7xasssa.com2.z0.glb.qiniucdn.com'
  10.         'timeout'=>3600, 
  11.     ), 

3、添加一個上傳類Model

  1. <?php 
  2. // +---------------------------------------------------------------------- 
  3. // | OneThink [ WE CAN DO IT JUST THINK IT ] 
  4. // +---------------------------------------------------------------------- 
  5. // | Copyright (c) 2013 http://www.onethink.cn All rights reserved. 
  6. // +---------------------------------------------------------------------- 
  7. // | Author: huajie <[email protected]> 
  8. // +---------------------------------------------------------------------- 
  9. namespace Admin/Model; 
  10. use Think/Model; 
  11. use Think/Upload; 
  12. /** 
  13.  * 圖片模型 
  14.  * 負責圖片的上傳 
  15.  */ 
  16. class PictureModel extends Model{ 
  17.     /** 
  18.      * 自動完成 
  19.      * @var array 
  20.      */ 
  21.     protected $_auto = array
  22.         array('status', 1, self::MODEL_INSERT), 
  23.         array('create_time', NOW_TIME, self::MODEL_INSERT), 
  24.     ); 
  25.     /** 
  26.      * 文件上傳 
  27.      * @param  array  $files   要上傳的文件列表(通常是$_FILES數組) 
  28.      * @param  array  $setting 文件上傳配置 
  29.      * @param  string $driver  上傳驅動名稱 
  30.      * @param  array  $config  上傳驅動配置 
  31.      * @return array           文件上傳成功后的信息 
  32.      */ 
  33.     public function upload($files$setting$driver = 'Local'$config = null){ 
  34.         /* 上傳文件 */ 
  35.           
  36.         $Upload = new Upload($setting$driver$config); 
  37.         $info  = $Upload->upload($files); 
  38.         if($info){ //文件上傳成功,記錄文件信息 
  39.             
  40.             return $info//文件上傳成功 
  41.         } else { 
  42.             $this->error = $Upload->getError(); 
  43.             return false; 
  44.         } 
  45.     } 
  46.     /** 
  47.      * 下載指定文件 
  48.      * @param  number  $root 文件存儲根目錄 
  49.      * @param  integer $id   文件ID 
  50.      * @param  string   $args     回調函數參數 
  51.      * @return boolean       false-下載失敗,否則輸出下載文件 
  52.      */ 
  53.     public function download($root$id$callback = null, $args = null){ 
  54.         /* 獲取下載文件信息 */ 
  55.         $file = $this->find($id); 
  56.         if(!$file){ 
  57.             $this->error = '不存在該文件!'
  58.             return false; 
  59.         } 
  60.         /* 下載文件 */ 
  61.         switch ($file['location']) { 
  62.             case 0: //下載本地文件 
  63.                 $file['rootpath'] = $root
  64.                 return $this->downLocalFile($file$callback$args); 
  65.             case 1: //TODO: 下載遠程FTP文件 
  66.                 break
  67.             default
  68.                 $this->error = '不支持的文件存儲類型!'
  69.                 return false; 
  70.         } 
  71.     } 
  72.     /** 
  73.      * 檢測當前上傳的文件是否已經存在 
  74.      * @param  array   $file 文件上傳數組 
  75.      * @return boolean       文件信息, false - 不存在該文件 
  76.      */ 
  77.     public function isFile($file){ 
  78.         if(emptyempty($file['md5'])){ 
  79.             throw new /Exception('缺少參數:md5'); 
  80.         } 
  81.         /* 查找文件 */ 
  82.         $map = array('md5' => $file['md5'],'sha1'=>$file['sha1'],); 
  83.         return $this->field(true)->where($map)->find(); 
  84.     } 
  85.     /** 
  86.      * 下載本地文件 
  87.      * @param  array    $file     文件信息數組 
  88.      * @param  callable $callback 下載回調函數,一般用于增加下載次數 
  89.      * @param  string   $args     回調函數參數 
  90.      * @return boolean            下載失敗返回false 
  91.      */ 
  92.     private function downLocalFile($file$callback = null, $args = null){ 
  93.         if(is_file($file['rootpath'].$file['savepath'].$file['savename'])){ 
  94.             /* 調用回調函數新增下載數 */ 
  95.             is_callable($callback) && call_user_func($callback$args); 
  96.             /* 執行下載 */ //TODO: 大文件斷點續傳 
  97.             header("Content-Description: File Transfer"); 
  98.             header('Content-type: ' . $file['type']); 
  99.             header('Content-Length:' . $file['size']); 
  100.             if (preg_match('/MSIE/'$_SERVER['HTTP_USER_AGENT'])) { //for IE 
  101.                 header('Content-Disposition: attachment; filename="' . rawurlencode($file['name']) . '"'); 
  102.             } else { 
  103.                 header('Content-Disposition: attachment; filename="' . $file['name'] . '"'); 
  104.             } 
  105.             readfile($file['rootpath'].$file['savepath'].$file['savename']); 
  106.             exit
  107.         } else { 
  108.             $this->error = '文件已被刪除!'
  109.             return false; 
  110.         } //Vevb.com 
  111.     } 
  112.     /** 
  113.      * 清除數據庫存在但本地不存在的數據 
  114.      * @param $data 
  115.      */ 
  116.     public function removeTrash($data){ 
  117.         //$this->where(array('id'=>$data['id'],))->delete(); 
  118.     } 

4、修改調用上傳類的代碼

  1. public function ImgUpload() 
  2.     { 
  3.         //$this->error("沒有文件!"); 
  4.         //TODO: 用戶登錄檢測  
  5.         /* 調用文件上傳組件上傳文件 */ 
  6.         $Picture = D('Picture'); 
  7.         $pic_driver = C('PICTURE_UPLOAD_DRIVER'); 
  8.         $info = $Picture->upload( 
  9.             $_FILES
  10.             C('PICTURE_UPLOAD'), 
  11.             C('PICTURE_UPLOAD_DRIVER'), 
  12.             C("UPLOAD_&#123;&#36;pic_driver&#125;_CONFIG"
  13.         ); //TODO:上傳到遠程服務器 
  14.         /* 記錄圖片信息 */ 
  15.         if($info){ 
  16.             /* 返回JSON數據 */ 
  17.            echo json_encode($info); 
  18.              
  19.         } else { 
  20.             echo json_encode($info); 
  21.         }  
  22.     } 

5、在客戶端使用ajaxfileupload調用php方法

  1. //上傳圖片 
  2. $(document).on('change','#upfile',function(){ 
  3.     $.ajaxFileUpload({ 
  4.         url:'{:U("Company/ImgUpload")}'
  5.         secureuri:false, 
  6.         fileElementId:'upfile'
  7.         dataType: 'json'
  8.         type:'post'
  9.         data: { fileElementId: 'upfile'}, 
  10.         success: function (data) { 
  11.                
  12.         $('#showimg').attr('src',data.upfile.url); 
  13.         $('#imageurl').val(data.upfile.url); 
  14.         }          
  15.     })  
  16. }) 

這里最好使用json的數據類型進行傳輸.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 一区二区三级视频 | 曰本三级日本三级日本三级 | 久久精品免费国产 | 国产成人高清成人av片在线看 | 国产免费专区 | 日韩视频一区二区三区在线观看 | 色妹子久久 | 一级在线观看 | 日韩视频www | 老师你怎么会在这第2季出现 | 91成人免费在线视频 | 失禁高潮抽搐喷水h | 免费久久精品 | 一级在线免费观看视频 | 日韩黄色影视 | 久久91久久| 91av亚洲| 中国videos露脸hd | 最新中文字幕在线视频 | 特级无码毛片免费视频尤物 | 久久久久成人免费 | 精品国产一区二区三区四区在线 | 亚州综合图片 | 黄污在线看 | 91色琪琪电影亚洲精品久久 | 精品亚洲视频在线 | 久久久久久久久久一本门道91 | 手机av在线电影 | 久草在线精品观看 | 一起草av在线 | 黄色免费av网站 | 亚洲午夜1000理论片aa | 国产精品热 | 欧美精品毛片 | 九九热色| 欧美77 | 久久久综合 | 国产精品成人一区二区三区电影毛片 | 成人毛片网 | 国产精品久久久不卡 | 一级毛片电影院 |