php上传到七牛
首页->学习资料->编程语言->php教程->大型网站技术 关键词: 发布时间:2016-06-29 11:43:37 浏览次数:1558

php sdk下载:

http://developer.qiniu.com/code/v7/sdk/php.html


<?php
/*
* app3.0后台
*/
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Storage\BucketManager;

class app3admin{

   private $accessKey;//qiniu accessKey
   private $secretKey;//qiniu secretKey
   private $bucket;//qiniu 存储空间名
   private $bucketDomain;//存储空间绑定的域名

   public function __construct()
   {

   }
   /*
    * 七牛配置信息
    */
   private function qiniuConfig()
   {
       $this->accessKey = '你自己的';
       $this->secretKey = '你自己的';
       $this->bucket = '存储空间名';
       $this->bucketDomain = '空间绑定的域名';
       include './lib/qiniu7.0.7/autoload.php';
   }

   /*
    * 请求方式
    * @param return string get,post,ajax
    */
   public function requestMethod()
   {
       $method=strtolower($_SERVER['REQUEST_METHOD']);
       if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])
           && (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ){
           $method='ajax';
       }
       return $method;
   }
   /*
    * 上传到七牛
    */
   public function uploadPic()
   {
       self::qiniuConfig();
       $tmp_name = $_FILES['fileField']['tmp_name'];
       $imageType = self::checkPic($tmp_name);
       $picName = date('YmdHis', time()) . '.' . $imageType;
       $auth = new Auth($this->accessKey, $this->secretKey);
       $token = $auth->uploadToken($this->bucket);
       $uploadMgr = new UploadManager();
       // 上传文件到七牛
       list($ret, $err) = $uploadMgr->putFile($token, $picName, $tmp_name);
       if ($err !== null) {
           $this->showDialog('上传到七牛失败');
       } else {
           $picUrl=$this->bucketDomain . $picName;
           echo "<script>window.parent.document.getElementById('qiniu_key').value='".$picUrl."';</script>";
           $this->showDialog($picUrl);
       }

   }

   /*
    * 检查上传图片
    * @param $tmp_name string 文件域上传产生的临时文件 $_FILES['fileField']['tmp_name']
    * @param $alloSize 允许上传的大小 单位M 不填最大5M
    * @param $alloType array 允许上传的类型
    * @return string 图片扩展名,如 jpg
    */
   public function checkPic($tmp_name,$alloSize=null,$alloType=null)
   {
       if(!isset($alloType)){
           $alloType = array('jpg', 'jpeg', 'gif', 'png');
       }
       if(!isset($alloSize)){
           $alloSize = 5;//5M
       }
       $imageInfo = getimagesize($tmp_name);//图片信息
       //根据图片类型编号取扩展名,去掉.
       $imageType = strtolower(substr(image_type_to_extension($imageInfo[2]), 1));
       $imageSize = filesize($tmp_name);//文件大小
       if (!in_array($imageType, $alloType)) {
           self::showDialog('上传失败请重试');
       }
       if ($imageSize > $alloSize*1024*1024) {
           self::showDialog('最大只允许上传'.$alloSize.'M的图片');
       }
       return $imageType;
   }

   /*
    * 父窗口弹出警告
    */
   function showDialog($msg)
   {
       echo "<script>window.parent.document.getElementById('tishi').innerHTML='".$msg."';</script>";
       exit();
   }

   /*
    * 从七牛删除
    * @param $key string 七牛上文件的名称
    */
   public function delFromQiniu($key)
   {
       self::qiniuConfig();
       //初始化Auth状态
       $auth = new Auth($this->accessKey, $this->secretKey);
       //初始化BucketManager
       $bucketMgr = new BucketManager($auth);
       //删除$bucket 中的文件 $key
       $err = $bucketMgr->delete($this->bucket, $key);
       if ($err !== null) {
           $ret['result']=0;
           $ret['msg']='从七牛上删除失败';
       } else {
           $ret['result']=1;
           $ret['msg']='从七牛上删除成功';
       }
       echo json_encode($ret);
   }
}
/*---------------------------------------------------以下为业务控制----------------------------------------------*/
$obj=new app3admin();
$method=$obj->requestMethod();//请求方式
if($method=='post'){//上传图片
   $obj->uploadPic();//上传到七牛
}
if($method=='ajax'){
   $ajaxAction=$_POST['ajaxAction'];
   switch ($ajaxAction){
       case 'delfromqiniu'://从七牛上删除
           $obj->delFromQiniu(trim($_POST['key']));
           break;
       default:
   }
}
if($method!='get'){//get时加载模板,否则只进行业务操作
   exit();
}

赞:(0)
踩:(0)
相关文章
大型网站及面临的问题及解决方法
网页静态化
thinkphp网页静态化
sphinx全文索引
高并发时表锁与文件锁
海量订单数据存储方法
高并发时商品库存处理方法
高并发测试及系统状态监测
PHP解决抢购、秒杀、抢楼、抽奖等
php多线程例子
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:916013
粤ICP备18028092号-1  微信:hurong241