[PHP] 新浪微盘API demo(上传文件 获取下载链接)vDisk.class.php →→→→→进入此内容的聊天室

来自 , 2019-11-08, 写在 PHP, 查看 96 次.
URL http://www.code666.cn/view/39d352b0
  1. <?php
  2. require_once('vDisk.class.php');
  3. require_once('../class/e_vDisk.class.php');
  4. /**
  5.  * 重新封装的微盘类
  6.  *
  7.  * @author aimsam
  8.  *
  9.  */
  10. class vDisk_simple
  11. {
  12.     private $appkey; //
  13.     private $appsecret;
  14.     private $username;
  15.     private $password;
  16.     private $token;
  17.     private $vDisk;
  18.    
  19.     /**
  20.      * 构造方法
  21.      *
  22.      * @param unknown_type $app_key
  23.      * @param unknown_type $app_secret
  24.      * @param unknown_type $username
  25.      * @param unknown_type $password
  26.      */
  27.     public function __construct($vDisk)
  28.     {
  29.         if (!($vDisk->getAppkey() && $vDisk->getAppsecret() && $vDisk->getUsername() && $vDisk->getPassword())) {
  30.             $this->set_error(-2, 'app_key or app_secret or password or username empty');
  31.             return;
  32.         }
  33.        
  34.        
  35.        
  36.         $this->vDisk = new vDisk($vDisk->getAppkey(), $vDisk->getAppsecret()); //创建微盘
  37.         $this->vDisk->get_token($vDisk->getUsername(), $vDisk->getPassword()); //获取token
  38.         $_SESSION['token'] = $vdisk->token;
  39.         $back              = $this->vDisk->keep_token(); //保持token
  40.         return $back['err_msg'];
  41.     }
  42.    
  43.    
  44.    
  45.    
  46.    
  47.    
  48.     /**
  49.      * 上传文件(10M以下)
  50.      *
  51.      * @param unknown_type $file
  52.      * @param unknown_type $cover
  53.      */
  54.     public function upload_file($file, $cover = 'yes')
  55.     {
  56.         if ($file["error"] > 0) {
  57.             $data['msg'] == "file_error"; //文件错误
  58.         } else if ($file["size"] / 1024 / 1024 > 10) {
  59.             $data['msg'] == "size_error"; //文件大于10MB
  60.         } else {
  61.             $back        = $this->vDisk->upload_file($file["tmp_name"], 0);
  62.             $data['fid'] = $back['data']['fid'];
  63.             $random      = date("Ymd") . "_" . date("His") . "_" . rand(1000, 9999);
  64.            
  65.             $this->vDisk->rename_file($back['data']['fid'], $random . "_" . $file["name"]);
  66.             $back        = $this->vDisk->get_file_info($data['fid']);
  67.             $data['msg'] = $back['err_msg'];
  68.         }
  69.         return $data;
  70.     }
  71.    
  72.     /**
  73.      * 获得下载地址
  74.      * @param unknown_type $fid
  75.      */
  76.     public function get_download_url($fid)
  77.     {
  78.         $back = $this->vDisk->get_file_info($fid);
  79.        
  80.         if ($back['err_msg'] == 'success') {
  81.             $data['msg'] = "success";
  82.             $data['fid'] = $back['data']['id'];
  83.             $data['url'] = $back['data']['s3_url'];
  84.         } else {
  85.             $data['msg'] = "error";
  86.         }
  87.        
  88.         return $data;
  89.     }
  90.    
  91.     /**
  92.      * 获得剩余容量
  93.      */
  94.     public function get_rest_area()
  95.     {
  96.         $back          = $this->vDisk->get_quota();
  97.         $data["msg"]   = $back["err_msg"];
  98.         $data["used"]  = $back["data"]["used"];
  99.         $data["total"] = $back["data"]["total"];
  100.         $data["rest"]  = $back["data"]["total"] - $back["data"]["used"];
  101.        
  102.         return $data;
  103.     }
  104.    
  105.     /**
  106.      * 删除文件
  107.      * @param unknown_type $fid
  108.      */
  109.     public function delete_file($fid)
  110.     {
  111.         return $this->vDisk->delete_file($fid);
  112.        
  113.     }
  114.    
  115.     /**
  116.      * 获得文件列表
  117.      */
  118.     public function get_list()
  119.     {
  120.         $back = $this->vDisk->get_list(0);
  121.         foreach ($back["data"] as $temp) {
  122.             $temp2["fid"]  = $temp["id"];
  123.             $temp2["name"] = $temp["name"];
  124.             $data[]        = $temp2;
  125.         }
  126.        
  127.         return $data;
  128.     }
  129.    
  130.     /**
  131.      * 是否可用
  132.      */
  133.     public function isUsed()
  134.     {
  135.         $back = $this->vDisk->keep_token(); //保持token
  136.         if (!$back['err_msg'] != 'success') {
  137.             return FALSE; //密码错误
  138.         }
  139.         $temp = get_rest_area();
  140.         if (($temp['rest'] / 1024 / 1024) < 50) //如果小于50M
  141.             {
  142.             return FALSE;
  143.         }
  144.        
  145.         return TRUE;
  146.     }
  147.    
  148. }
  149.  
  150. ?>
  151.  
  152.  
  153. =================
  154. 附上vDisk.class.php
  155. =================
  156. <?php
  157.  
  158. /**
  159.  * vDisk sdk for SAE and Standard PHP (SaeFetchurl or CURL)
  160.  *
  161.  * @package vDisk
  162.  *
  163.  * @version $Id$
  164.  *
  165.  * @author Bruce Chen
  166.  *
  167.  */
  168.  
  169.  
  170. /**
  171.  * URL
  172.  */
  173. define(URL_GET_TOKEN, 'http://openapi.vdisk.me/?m=auth&a=get_token');
  174. define(URL_KEEP_TOKEN, 'http://openapi.vdisk.me/?m=user&a=keep_token');
  175. define(URL_UPLOAD_FILE, 'http://openapi.vdisk.me/?m=file&a=upload_file');
  176. define(URL_UPLOAD_SHARE_FILE, 'http://openapi.vdisk.me/?m=file&a=upload_share_file');
  177. define(URL_CREATE_DIR, 'http://openapi.vdisk.me/?m=dir&a=create_dir');
  178. define(URL_GET_LIST, 'http://openapi.vdisk.me/?m=dir&a=get_list');
  179. define(URL_GET_QUOTA, 'http://openapi.vdisk.me/?m=file&a=get_quota');
  180. define(URL_UPLOAD_WITH_SHA1, 'http://openapi.vdisk.me/?m=file&a=upload_with_sha1');
  181. define(URL_GET_FILE_INFO, 'http://openapi.vdisk.me/?m=file&a=get_file_info');
  182. define(URL_DELETE_DIR, 'http://openapi.vdisk.me/?m=dir&a=delete_dir');
  183. define(URL_DELETE_FILE, 'http://openapi.vdisk.me/?m=file&a=delete_file');
  184. define(URL_COPY_FILE, 'http://openapi.vdisk.me/?m=file&a=copy_file');
  185. define(URL_MOVE_FILE, 'http://openapi.vdisk.me/?m=file&a=move_file');
  186. define(URL_RENAME_FILE, 'http://openapi.vdisk.me/?m=file&a=rename_file');
  187. define(URL_RENAME_DIR, 'http://openapi.vdisk.me/?m=dir&a=rename_dir');
  188. define(URL_MOVE_DIR, 'http://openapi.vdisk.me/?m=dir&a=move_dir');
  189. define(URL_SHARE_FILE, 'http://openapi.vdisk.me/?m=file&a=share_file');
  190. define(URL_CANCEL_SHARE_FILE, 'http://openapi.vdisk.me/?m=file&a=cancel_share_file');
  191. define(URL_RECYCLE_GET_LIST, 'http://openapi.vdisk.me/?m=recycle&a=get_list');
  192. define(URL_TRUNCATE_RECYCLE_GET, 'http://openapi.vdisk.me/?m=recycle&a=truncate_recycle');
  193. define(URL_RECYCLE_DELETE_FILE, 'http://openapi.vdisk.me/?m=recycle&a=delete_file');
  194. define(URL_RECYCLE_DELETE_DIR, 'http://openapi.vdisk.me/?m=recycle&a=delete_dir');
  195. define(URL_RECYCLE_RESTORE_FILE, 'http://openapi.vdisk.me/?m=recycle&a=restore_file');
  196. define(URL_RECYCLE_RESTORE_DIR, 'http://openapi.vdisk.me/?m=recycle&a=restore_dir');
  197. define(URL_GET_DIRID_WITH_PATH, 'http://openapi.vdisk.me/?m=dir&a=get_dirid_with_path');
  198. define(URL_EMAIL_SHARE_FILE, 'http://openapi.vdisk.me/?m=file&a=email_share_file');
  199.  
  200.  
  201.  
  202. /*
  203.  * 使用方法:
  204.  *
  205.  * include_once('vDisk.class.php');
  206.  * $appkey = 1234567;
  207.  * $appsecret = '123456739cc20556637a576ea1234567';
  208.  * $username = 'username@gmail.com';
  209.  * $password = '123456';
  210.  *
  211.  * $vdisk = new vDisk($appkey, $appsecret);
  212.  *
  213.  * $vdisk->get_token($username, $password);
  214.  * $_SESSION['token'] = $vdisk->token;
  215.  *
  216.  * $vdisk->keep_token();
  217.  *
  218.  * //$r = $vdisk->upload_share_file('文件.txt', 0);
  219.  * //$r = $vdisk->get_list(0);
  220.  * //$r = $vdisk->get_quota();
  221.  * //$r = $vdisk->upload_with_md5('测试.pdf', '03d5717869bb075e3bad73b527fabc8a');
  222.  * //$r = $vdisk->get_file_info(219379);
  223.  * //$r = $vdisk->create_dir('测试一下');
  224.  * //$r = $vdisk->delete_dir(35647);
  225.  * //$r = $vdisk->delete_file(123);
  226.  * //$r = $vdisk->copy_file(219379, 0, '副本.txt');
  227.  * //$r = $vdisk->move_file(219379, 0, '副本.txt');
  228.  * //$r = $vdisk->rename_file(219379, '新的新的新的.z');
  229.  * //$r = $vdisk->rename_dir(3929, '新的新的新的');
  230.  * $r = $vdisk->move_dir(3929, "我的图片们", 0);
  231.  * print_r($r);
  232.  *
  233.  *
  234. */
  235.  
  236.  
  237. class vDisk
  238. {
  239.  
  240.         public $appkey;
  241.         public $appsecret;
  242.         public $username;
  243.         public $password;
  244.         public $token;
  245.        
  246.         private $_errno;       
  247.         private $_error;
  248.        
  249.        
  250.         /**
  251.          * 构造函数
  252.          *
  253.          * @param string $app_key 分配给你的appkey
  254.          * @param string $app_secret 分配给你的appsecret
  255.          *
  256.          * @return void
  257.          *
  258.          * @author Bruce Chen
  259.          *
  260.         */
  261.         public function __construct($app_key, $app_secret)
  262.         {
  263.                 if(!($app_key && $app_secret))
  264.                 {      
  265.                         $this->set_error(-2, 'app_key or app_secret empty');
  266.                         return;
  267.                 }
  268.                
  269.                 $this->appkey = $app_key;
  270.                 $this->appsecret = $app_secret;
  271.                 $this->set_error(-1, 'empty');
  272.         }
  273.        
  274.        
  275.         /**
  276.          * 获得token
  277.          *
  278.          * @param string $username
  279.          * @param string $password
  280.          * @param string $app_type 可选参数, 如:$app_type=sinat (注意: 目前支持微博帐号)
  281.          *
  282.          * @return array
  283.          *
  284.          * @author Bruce Chen
  285.          *
  286.         */
  287.         public function get_token($username, $password, $app_type=null)
  288.         {
  289.                
  290.                 $this->username = $username;
  291.                 $this->password = $password;
  292.                
  293.                 $time = time();
  294.                 $param = array(
  295.                
  296.                                 'account' => $username,
  297.                                 'password' => $password,
  298.                                 'time' => $time,
  299.                                 'appkey' => $this->appkey,
  300.                                 'app_type' => $app_type,
  301.                                 'signature' => hash_hmac('sha256', "account={$username}&appkey={$this->appkey}&password={$password}&time={$time}", $this->appsecret, false)
  302.                         );
  303.        
  304.                 $data = $this->_request(URL_GET_TOKEN, $param);
  305.                
  306.                 if($data && $data['err_code'] == 0)
  307.                 {
  308.                         $this->token = $data['data']['token'];
  309.                 }
  310.                
  311.                 return $data;
  312.         }
  313.        
  314.        
  315.         /**
  316.          * 保持token
  317.          *
  318.          * @param string $token 可选参数
  319.          *
  320.          * @return array
  321.          *
  322.          * @author Bruce Chen
  323.          *
  324.         */
  325.         public function keep_token($token=null)
  326.         {
  327.                 if($token)
  328.                 {
  329.                         $this->token = $token;
  330.                 }
  331.                
  332.                 if($this->token)
  333.                 {
  334.                         $param = array(
  335.                        
  336.                                         'token' => $this->token
  337.                                 );
  338.                                
  339.                         $data = $this->_request(URL_KEEP_TOKEN, $param);
  340.                        
  341.                         return $data;
  342.                 }
  343.                 else
  344.                 {
  345.                         return false;
  346.                 }
  347.         }
  348.        
  349.        
  350.         /**
  351.          * 上传文件(10M以下)
  352.          *
  353.          * @param string $file_path 本地文件真实路径
  354.          *
  355.          * @param int $dir_id 目录id
  356.          *
  357.          * @param string $cover 可选参数, yes:覆盖; no:如有重名返回错误信息
  358.          *
  359.          * @return array
  360.          *
  361.          * @author Bruce Chen
  362.          *
  363.         */
  364.         public function upload_file($file_path, $dir_id, $cover='yes')
  365.         {
  366.                
  367.                 if($this->token)
  368.                 {
  369.                         $param = array(
  370.                        
  371.                                 'file' => '@'.$file_path,
  372.                                 'token' => $this->token,
  373.                                 'dir_id' => $dir_id,
  374.                                 'cover' => $cover
  375.                         );
  376.                        
  377.                         $data = $this->_request(URL_UPLOAD_FILE, $param);
  378.                        
  379.                         return $data;
  380.                 }
  381.                 else
  382.                 {
  383.                         return false;
  384.                 }
  385.                
  386.         }
  387.        
  388.        
  389.         /**
  390.          * 上传并分享文件(10M以下)
  391.          *
  392.          * @param string $file_path 本地文件真实路径
  393.          *
  394.          * @param int $dir_id 目录id
  395.          *
  396.          * @param string $cover 可选参数, yes:覆盖; no:如有重名返回错误信息
  397.          *
  398.          * @return array 包含分享后的url
  399.          *
  400.          * @author Bruce Chen
  401.          *
  402.         */
  403.         public function upload_share_file($file_path, $dir_id, $cover='yes')
  404.         {
  405.                 if($this->token)
  406.                 {
  407.                         $param = array(
  408.                        
  409.                                 'file' => '@'.$file_path,
  410.                                 'token' => $this->token,
  411.                                 'dir_id' => $dir_id,
  412.                                 'cover' => $cover
  413.                         );
  414.                        
  415.                         $data = $this->_request(URL_UPLOAD_SHARE_FILE, $param);
  416.                        
  417.                         return $data;
  418.                 }
  419.                 else
  420.                 {
  421.                         return false;
  422.                 }
  423.         }
  424.        
  425.        
  426.         /**
  427.          * 创建目录
  428.          *
  429.          * @param string $create_name 目录的名称
  430.          *
  431.          * @param int $parent_id 父目录的id
  432.          *
  433.          * @return array
  434.          *
  435.          * @author Bruce Chen
  436.          *
  437.         */
  438.         public function create_dir($create_name, $parent_id=0)
  439.         {
  440.                 if($this->token)
  441.                 {
  442.                         $param = array(
  443.  
  444.                                 'token' => $this->token,
  445.                                 'create_name' => $create_name,
  446.                                 'parent_id' => $parent_id
  447.                         );
  448.                        
  449.                         $data = $this->_request(URL_CREATE_DIR, $param);
  450.                        
  451.                         return $data;
  452.                 }
  453.                 else
  454.                 {
  455.                         return false;
  456.                 }
  457.  
  458.         }
  459.        
  460.        
  461.         /**
  462.          * 获得列表(包括文件和子目录)
  463.          *
  464.          * @param int $dir_id 目录的id
  465.          *
  466.          * @return array
  467.          *
  468.          * @author Bruce Chen
  469.          *
  470.         */
  471.         public function get_list($dir_id)
  472.         {
  473.                 if($this->token)
  474.                 {
  475.                         $param = array(
  476.  
  477.                                 'token' => $this->token,
  478.                                 'dir_id' => $dir_id
  479.                         );
  480.                        
  481.                         $data = $this->_request(URL_GET_LIST, $param);
  482.                        
  483.                         return $data;
  484.                 }
  485.                 else
  486.                 {
  487.                         return false;
  488.                 }
  489.         }
  490.        
  491.        
  492.         /**
  493.          * 获得容量信息
  494.          *
  495.          * @return array
  496.          *
  497.          * @author Bruce Chen
  498.          *
  499.         */
  500.         public function get_quota()
  501.         {
  502.                 if($this->token)
  503.                 {
  504.                         $param = array(
  505.  
  506.                                 'token' => $this->token
  507.                         );
  508.                        
  509.                         $data = $this->_request(URL_GET_QUOTA, $param);
  510.                        
  511.                         return $data;
  512.                 }
  513.                 else
  514.                 {
  515.                         return false;
  516.                 }
  517.         }
  518.        
  519.        
  520.         /**
  521.          * 无文件上传(md5)
  522.          *
  523.          * @param string $file_name 上传以后的文件名
  524.          * @param string $md5 要上传文件的md5值
  525.          * @param int $dir_id 目标目录的id, 0为根目录
  526.          *
  527.          * @return array
  528.          *
  529.          * @author Bruce Chen
  530.          *
  531.         */
  532.         public function upload_with_sha1($file_name, $sha1, $dir_id=0)
  533.         {
  534.                 if($this->token)
  535.                 {
  536.                         $param = array(
  537.  
  538.                                 'token' => $this->token,
  539.                                 'file_name' => $file_name,
  540.                                 'sha1' => $sha1,
  541.                                 'dir_id' => $dir_id
  542.                         );
  543.                        
  544.                         $data = $this->_request(URL_UPLOAD_WITH_SHA1, $param);
  545.                        
  546.                         return $data;
  547.                 }
  548.                 else
  549.                 {
  550.                         return false;
  551.                 }
  552.         }
  553.        
  554.        
  555.         /**
  556.          * 获得文件的信息
  557.          *
  558.          * @param int $fid 文件的id
  559.          *
  560.          * @return array
  561.          *
  562.          * @author Bruce Chen
  563.          *
  564.         */
  565.         public function get_file_info($fid)
  566.         {
  567.                 if($this->token)
  568.                 {
  569.                         $param = array(
  570.  
  571.                                 'token' => $this->token,
  572.                                 'fid' => $fid,
  573.                         );
  574.                        
  575.                         $data = $this->_request(URL_GET_FILE_INFO, $param);
  576.                        
  577.                         return $data;
  578.                 }
  579.                 else
  580.                 {
  581.                         return false;
  582.                 }
  583.         }
  584.        
  585.        
  586.         /**
  587.          * 删除目录
  588.          *
  589.          * @param int $dir_id 目录的id
  590.          *
  591.          * @return array
  592.          *
  593.          * @author Bruce Chen
  594.          *
  595.         */
  596.         public function delete_dir($dir_id)
  597.         {
  598.                 if($this->token)
  599.                 {
  600.                         $param = array(
  601.  
  602.                                 'token' => $this->token,
  603.                                 'dir_id' => $dir_id,
  604.                         );
  605.                        
  606.                         $data = $this->_request(URL_DELETE_DIR, $param);
  607.                        
  608.                         return $data;
  609.                 }
  610.                 else
  611.                 {
  612.                         return false;
  613.                 }
  614.         }
  615.        
  616.        
  617.         /**
  618.          * 删除文件
  619.          *
  620.          * @param int $fid 文件的id
  621.          *
  622.          * @return array
  623.          *
  624.          * @author Bruce Chen
  625.          *
  626.         */
  627.         public function delete_file($fid)
  628.         {
  629.                 if($this->token)
  630.                 {
  631.                         $param = array(
  632.  
  633.                                 'token' => $this->token,
  634.                                 'fid' => $fid,
  635.                         );
  636.                        
  637.                         $data = $this->_request(URL_DELETE_FILE, $param);
  638.                        
  639.                         return $data;
  640.                 }
  641.                 else
  642.                 {
  643.                         return false;
  644.                 }
  645.         }
  646.        
  647.        
  648.         /**
  649.          * 复制文件
  650.          *
  651.          * @param int $fid 要复制文件的id
  652.          * @param int $to_dir_id 目标目录的id
  653.          * @param string $new_name 副本文件的名称
  654.          *
  655.          * @return array
  656.          *
  657.          * @author Bruce Chen
  658.          *
  659.         */
  660.         public function copy_file($fid, $to_dir_id, $new_name)
  661.         {
  662.                 if($this->token)
  663.                 {
  664.                         $param = array(
  665.  
  666.                                 'token' => $this->token,
  667.                                 'fid' => $fid,
  668.                                 'to_dir_id' => $to_dir_id,
  669.                                 'new_name' => $new_name
  670.                         );
  671.                        
  672.                         $data = $this->_request(URL_COPY_FILE, $param);
  673.                        
  674.                         return $data;
  675.                 }
  676.                 else
  677.                 {
  678.                         return false;
  679.                 }
  680.         }
  681.        
  682.        
  683.         /**
  684.          * 移动文件
  685.          *
  686.          * @param int $fid 要移动文件的id
  687.          * @param int $to_dir_id 目标目录的id
  688.          * @param string $new_name 移动后的文件名称
  689.          *
  690.          * @return array
  691.          *
  692.          * @author Bruce Chen
  693.          *
  694.         */
  695.         public function move_file($fid, $to_dir_id, $new_name)
  696.         {
  697.                 if($this->token)
  698.                 {
  699.                         $param = array(
  700.  
  701.                                 'token' => $this->token,
  702.                                 'fid' => $fid,
  703.                                 'to_dir_id' => $to_dir_id,
  704.                                 'new_name' => $new_name
  705.                         );
  706.                        
  707.                         $data = $this->_request(URL_MOVE_FILE, $param);
  708.                        
  709.                         return $data;
  710.                 }
  711.                 else
  712.                 {
  713.                         return false;
  714.                 }
  715.         }
  716.        
  717.        
  718.         /**
  719.          * 重命名文件
  720.          *
  721.          * @param int $fid 文件的id
  722.          * @param string $new_name 新文件名称
  723.          *
  724.          * @return array
  725.          *
  726.          * @author Bruce Chen
  727.          *
  728.         */
  729.         public function rename_file($fid, $new_name)
  730.         {
  731.                 if($this->token)
  732.                 {
  733.                         $param = array(
  734.  
  735.                                 'token' => $this->token,
  736.                                 'fid' => $fid,
  737.                                 'new_name' => $new_name
  738.                         );
  739.                        
  740.                         $data = $this->_request(URL_RENAME_FILE, $param);
  741.                        
  742.                         return $data;
  743.                 }
  744.                 else
  745.                 {
  746.                         return false;
  747.                 }              
  748.         }
  749.        
  750.        
  751.         /**
  752.          * 重命名目录
  753.          *
  754.          * @param int $dir_id 目录的id
  755.          * @param string $new_name 新名称
  756.          *
  757.          * @return array
  758.          *
  759.          * @author Bruce Chen
  760.          *
  761.         */
  762.         public function rename_dir($dir_id, $new_name)
  763.         {
  764.                 if($this->token)
  765.                 {
  766.                         $param = array(
  767.  
  768.                                 'token' => $this->token,
  769.                                 'dir_id' => $dir_id,
  770.                                 'new_name' => $new_name
  771.                         );
  772.                        
  773.                         $data = $this->_request(URL_RENAME_DIR, $param);
  774.                        
  775.                         return $data;
  776.                 }
  777.                 else
  778.                 {
  779.                         return false;
  780.                 }      
  781.         }
  782.        
  783.        
  784.         /**
  785.          * 移动目录
  786.          *
  787.          * @param int $dir_id 目录的id
  788.          * @param string $new_name 移动后的名称
  789.          * @param int $to_parent_id 目标目录的id
  790.          *
  791.          * @return array
  792.          *
  793.          * @author Bruce Chen
  794.          *
  795.         */
  796.         public function move_dir($dir_id, $new_name, $to_parent_id)
  797.         {
  798.                 if($this->token)
  799.                 {
  800.                         $param = array(
  801.  
  802.                                 'token' => $this->token,
  803.                                 'dir_id' => $dir_id,
  804.                                 'new_name' => $new_name,
  805.                                 'to_parent_id' => $to_parent_id
  806.                         );
  807.                        
  808.                         $data = $this->_request(URL_MOVE_DIR, $param);
  809.                        
  810.                         return $data;
  811.                 }
  812.                 else
  813.                 {
  814.                         return false;
  815.                 }
  816.         }
  817.        
  818.                
  819.         /**
  820.          * 分享文件
  821.          *
  822.          * @param int $fid 文件的id
  823.          *
  824.          * @return array
  825.          *
  826.          * @author Bruce Chen
  827.          *
  828.         */
  829.         public function share_file($fid)
  830.         {
  831.                 if($this->token)
  832.                 {
  833.                         $param = array(
  834.  
  835.                                 'token' => $this->token,
  836.                                 'fid' => $fid
  837.                         );
  838.                        
  839.                         $data = $this->_request(URL_SHARE_FILE, $param);
  840.                        
  841.                         return $data;
  842.                 }
  843.                 else
  844.                 {
  845.                         return false;
  846.                 }
  847.         }
  848.        
  849.        
  850.         /**
  851.          * 取消分享
  852.          *
  853.          * @param int $fid 文件的id
  854.          *
  855.          * @return array
  856.          *
  857.          * @author Bruce Chen
  858.          *
  859.         */
  860.         public function cancel_share_file($fid)
  861.         {
  862.                 if($this->token)
  863.                 {
  864.                         $param = array(
  865.  
  866.                                 'token' => $this->token,
  867.                                 'fid' => $fid
  868.                         );
  869.                        
  870.                         $data = $this->_request(URL_CANCEL_SHARE_FILE, $param);
  871.                        
  872.                         return $data;
  873.                 }
  874.                 else
  875.                 {
  876.                         return false;
  877.                 }
  878.         }
  879.        
  880.        
  881.         /**
  882.          * 获得回收站列表
  883.          *
  884.          * @param int $page 第几页
  885.          * @param int $page_size 每页显示条数
  886.          *
  887.          * @return array
  888.          *
  889.          * @author Bruce Chen
  890.          *
  891.         */
  892.         public function recycle_get_list($page=1, $page_size=25)
  893.         {
  894.                 if($this->token)
  895.                 {
  896.                         $param = array(
  897.  
  898.                                 'token' => $this->token,
  899.                                 'page' => $page,
  900.                                 'page_size' => $page_size
  901.                         );
  902.                        
  903.                         $data = $this->_request(URL_RECYCLE_GET_LIST, $param);
  904.                        
  905.                         return $data;
  906.                 }
  907.                 else
  908.                 {
  909.                         return false;
  910.                 }
  911.         }
  912.        
  913.        
  914.         /**
  915.          * 清空回收站
  916.          *
  917.          * @return array
  918.          *
  919.          * @author Bruce Chen
  920.          *
  921.         */
  922.         public function truncate_recycle()
  923.         {
  924.                 if($this->token)
  925.                 {
  926.                         $param = array(
  927.  
  928.                                 'token' => $this->token
  929.                         );
  930.                        
  931.                         $data = $this->_request(URL_TRUNCATE_RECYCLE_GET, $param);
  932.                        
  933.                         return $data;
  934.                 }
  935.                 else
  936.                 {
  937.                         return false;
  938.                 }
  939.         }
  940.        
  941.         /**
  942.          * 从回收站中彻底删除一个文件
  943.          *
  944.          * @param int $fid 文件id
  945.          *
  946.          * @return array
  947.          *
  948.          * @author Bruce Chen
  949.          *
  950.         */
  951.         public function recycle_delete_file($fid)
  952.         {
  953.                 if($this->token)
  954.                 {
  955.                         $param = array(
  956.  
  957.                                 'token' => $this->token,
  958.                                 'fid' => $fid
  959.                         );
  960.                        
  961.                         $data = $this->_request(URL_RECYCLE_DELETE_FILE, $param);
  962.                        
  963.                         return $data;
  964.                 }
  965.                 else
  966.                 {
  967.                         return false;
  968.                 }
  969.         }
  970.        
  971.         /**
  972.          * 从回收站中彻底删除一个目录
  973.          *
  974.          * @param int $dir_id 目录的id
  975.          *
  976.          * @return array
  977.          *
  978.          * @author Bruce Chen
  979.          *
  980.         */
  981.         public function recycle_delete_dir($dir_id)
  982.         {
  983.                 if($this->token)
  984.                 {
  985.                         $param = array(
  986.  
  987.                                 'token' => $this->token,
  988.                                 'dir_id' => $dir_id
  989.                         );
  990.                        
  991.                         $data = $this->_request(URL_RECYCLE_DELETE_DIR, $param);
  992.                        
  993.                         return $data;
  994.                 }
  995.                 else
  996.                 {
  997.                         return false;
  998.                 }
  999.         }
  1000.        
  1001.        
  1002.        
  1003.         /**
  1004.          * 从回收站中还原一个文件
  1005.          *
  1006.          * @param int $fid 文件id
  1007.          *
  1008.          * @return array
  1009.          *
  1010.          * @author Bruce Chen
  1011.          *
  1012.         */
  1013.         public function restore_file($fid)
  1014.         {
  1015.                 if($this->token)
  1016.                 {
  1017.                         $param = array(
  1018.  
  1019.                                 'token' => $this->token,
  1020.                                 'fid' => $fid
  1021.                         );
  1022.                        
  1023.                         $data = $this->_request(URL_RECYCLE_RESTORE_FILE, $param);
  1024.                        
  1025.                         return $data;
  1026.                 }
  1027.                 else
  1028.                 {
  1029.                         return false;
  1030.                 }
  1031.         }
  1032.        
  1033.        
  1034.         /**
  1035.          * 从回收站中还原一个目录
  1036.          *
  1037.          * @param int $dir_id 目录的id
  1038.          *
  1039.          * @return array
  1040.          *
  1041.          * @author Bruce Chen
  1042.          *
  1043.         */
  1044.         public function restore_dir($dir_id)
  1045.         {
  1046.                 if($this->token)
  1047.                 {
  1048.                         $param = array(
  1049.  
  1050.                                 'token' => $this->token,
  1051.                                 'dir_id' => $dir_id
  1052.                         );
  1053.                        
  1054.                         $data = $this->_request(URL_RECYCLE_RESTORE_DIR, $param);
  1055.                        
  1056.                         return $data;
  1057.                 }
  1058.                 else
  1059.                 {
  1060.                         return false;
  1061.                 }
  1062.         }
  1063.        
  1064.         /**
  1065.          * 通过路径得到目录
  1066.          *
  1067.          * @param string $path 路径
  1068.          *
  1069.          * @return array
  1070.          *
  1071.          * @author Bruce Chen
  1072.          *
  1073.         */
  1074.         public function get_dirid_with_path($path)
  1075.         {
  1076.                 if($this->token)
  1077.                 {
  1078.                         $param = array(
  1079.  
  1080.                                 'token' => $this->token,
  1081.                                 'path' => $path
  1082.                         );
  1083.                        
  1084.                         $data = $this->_request(URL_GET_DIRID_WITH_PATH, $param);
  1085.                        
  1086.                         return $data;
  1087.                 }
  1088.                 else
  1089.                 {
  1090.                         return false;
  1091.                 }
  1092.         }
  1093.        
  1094.        
  1095.         /**
  1096.          * 通过邮件发送文件链接
  1097.          *
  1098.          * @param int $fid
  1099.          * @param string $to_email
  1100.          *
  1101.          * @return array
  1102.          *
  1103.          * @author Bruce Chen
  1104.          *
  1105.         */
  1106.         public function email_share_file($fid, $to_email)
  1107.         {
  1108.                 if($this->token)
  1109.                 {
  1110.                         $param = array(
  1111.  
  1112.                                 'token' => $this->token,
  1113.                                 'fid' => $fid,
  1114.                                 'to_email' => $to_email
  1115.                         );
  1116.                        
  1117.                         $data = $this->_request(URL_EMAIL_SHARE_FILE, $param);
  1118.                        
  1119.                         return $data;
  1120.                 }
  1121.                 else
  1122.                 {
  1123.                         return false;
  1124.                 }
  1125.         }
  1126.        
  1127.        
  1128.         /**
  1129.          * 发送http请求, 兼容SEA的Fetchurl, 私有方法
  1130.          *
  1131.          * @param string $url
  1132.          * @param array $array  POST DATA ($array=null为GET方式)
  1133.          *
  1134.          * @return array
  1135.          *
  1136.          * @author Bruce Chen
  1137.          *
  1138.         */
  1139.         private function _request($url, $array=null)
  1140.         {
  1141.                 if(!isset($_SERVER['HTTP_APPNAME']))
  1142.                 {
  1143.                         $curl = curl_init();
  1144.                         curl_setopt($curl, CURLOPT_URL, $url);
  1145.                         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  1146.                         if($array != null)
  1147.                         {
  1148.                                 curl_setopt($curl, CURLOPT_POST, true);
  1149.                                 curl_setopt($curl, CURLOPT_POSTFIELDS, $array);
  1150.                         }
  1151.                         $data = curl_exec($curl);
  1152.                         curl_close($curl);
  1153.                         if($arr = json_decode($data, true))
  1154.                         {      
  1155.                                 $this->set_error($arr['err_code'], $arr['err_msg']);
  1156.                                 return $arr;
  1157.                         }
  1158.                         else
  1159.                         {
  1160.                                 $this->set_error(-1, 'empty');
  1161.                                 return false;
  1162.                         }
  1163.                 }
  1164.                 else
  1165.                 {
  1166.                         if($array != null)
  1167.                         {
  1168.                                 $this->_f()->setMethod('post');
  1169.                                 $this->_f()->setPostData($array);                      
  1170.                         }
  1171.                        
  1172.                         $data = $this->_f()->fetch($url);
  1173.                
  1174.                         if($arr = json_decode($data, true))
  1175.                         {
  1176.                                 $this->set_error($arr['err_code'], $arr['err_msg']);   
  1177.                                 return $arr;
  1178.                         }
  1179.                         else
  1180.                         {      
  1181.                                 $this->set_error(-1, 'empty');
  1182.                                 return false;
  1183.                         }
  1184.                 }
  1185.                                        
  1186.         }
  1187.  
  1188.         /**
  1189.          * 返回SaeFetchurl object, 保证只new一次
  1190.          *
  1191.          * @return SaeFetchurl object
  1192.          *
  1193.          * @author Bruce Chen
  1194.          *
  1195.         */
  1196.         private function _f()
  1197.         {
  1198.                 if(!isset($this->_f))
  1199.                         $this->_f = new SaeFetchurl();
  1200.                
  1201.                 return $this->_f;
  1202.         }
  1203.        
  1204.        
  1205.         private function set_error($errno, $error)
  1206.         {
  1207.                 $this->_errno = $errno;
  1208.                 $this->_error = $error;
  1209.         }
  1210.        
  1211.         public function errno()
  1212.         {
  1213.                 return $this->_errno;  
  1214.         }
  1215.  
  1216.         public function error()
  1217.         {
  1218.                 return $this->_error;
  1219.         }
  1220. }
  1221.  
  1222.  
  1223.  
  1224.  
  1225. ?>

回复 "新浪微盘API demo(上传文件 获取下载链接)vDisk.class.php"

这儿你可以回复上面这条便签

captcha