Esempio n. 1
0
 /**
  * 移动文件到目标位置
  * @param string $opath 被移动的文件路径
  * @param string $path 目标位置(可能是同一api内或跨api,这两种情况分开处理)
  * @return icosdatas
  */
 public function CopyTo($opath, $path, $iscopy)
 {
     $oarr = self::parsePath($opath);
     $arr = IO::parsePath($path);
     try {
         $pcs = self::init($opath);
         if (is_array($pcs) && $pcs['error']) {
             return $pcs;
         }
         if ($arr['bz'] == $oarr['bz'] && !$iscopy) {
             //同一api内
             $data = self::getMeta($opath);
             $response = $pcs->moveSingle($oarr['path'], $arr['path'] . '/' . $data['name']);
             $result = json_decode($response, true);
             if ($result['error_code']) {
                 $data['success'] = $result['error_msg'];
                 return $data;
             }
             $meta = $pcs->getMeta($arr['path'] . '/' . $data['name']);
             $meta = json_decode($meta, true);
             //if($meta['error_msg']) return array('error'=>$meta['error_msg']);
             $meta = $meta['list'][0];
             $data['newdata'] = self::_formatMeta($meta, $arr['bz']);
             $data['success'] = true;
             return $data;
         } else {
             $data = self::getMeta($opath);
             switch ($data['type']) {
                 case 'folder':
                     //创建目录
                     if ($re = IO::CreateFolder($path, $data['name'])) {
                         if (isset($re['error']) && intval($re['error_code']) != 31061) {
                             $data['success'] = $re['error'];
                         } else {
                             $data['newdata'] = $re['icoarr'];
                             $data['success'] = true;
                             $contents = self::listFiles($opath);
                             //	 print_r($contents);
                             foreach ($contents as $key => $value) {
                                 $data['contents'][$key] = self::CopyTo($value['path'], $re['folderarr']['path']);
                             }
                         }
                     }
                     break;
                 default:
                     //$fileContent=IO::getFileContent($opath);
                     //exit($opath.'==='.$path.'==='.$data['name']);
                     if ($re = IO::multiUpload($opath, $path, $data['name'])) {
                         if ($re['error']) {
                             $data['success'] = $re['error'];
                         } else {
                             $data['newdata'] = $re;
                             $data['success'] = true;
                         }
                     }
             }
         }
     } catch (Exception $e) {
         //var_dump($e);
         $data['success'] = $e->getMessage();
         return $data;
     }
     return $data;
 }
Esempio n. 2
0
 /**
  * 移动文件到目标位置
  * @param string $opath 被移动的文件路径
  * @param string $path 目标位置(可能是同一api内或跨api,这两种情况分开处理)
  * @return icosdatas
  */
 public function CopyTo($opath, $path, $iscopy)
 {
     $oarr = self::parsePath($opath);
     $arr = IO::parsePath($path);
     $data = self::getMeta($opath);
     switch ($data['type']) {
         case 'folder':
             //创建目录
             if ($re = IO::CreateFolder($path, $data['name'])) {
                 $data['newdata'] = $re['icoarr'];
                 $data['success'] = true;
                 $contents = self::listFiles($opath);
                 foreach ($contents as $key => $value) {
                     $data['contents'][$key] = self::CopyTo($value['path'], $re['folderarr']['path']);
                 }
             }
             break;
         default:
             if ($re = IO::multiUpload($opath, $path, $data['name'])) {
                 if ($re['error']) {
                     $data['success'] = $re['error'];
                 } else {
                     $data['newdata'] = $re;
                     $data['success'] = true;
                 }
             }
     }
     return $data;
 }
Esempio n. 3
0
 /**
  * 移动文件到目标位置
  * @param string $opath 被移动的文件路径
  * @param string $path 目标位置(可能是同一api内或跨api,这两种情况分开处理)
  * @return icosdatas
  */
 public function CopyTo($icoid, $path, $iscopy)
 {
     try {
         $data = self::getMeta($icoid);
         if (is_numeric($path)) {
             //如果目标位置也是本地
             if (!$iscopy) {
                 $re = self::FileMove($icoid, $path, true);
                 $data['newdata'] = $re['icoarr'];
                 $data['success'] = true;
             } else {
                 $re = self::FileCopy($icoid, $path, true);
                 $data['newdata'] = $re['icoarr'];
                 $data['success'] = true;
             }
             if ($re['error']) {
                 $data['success'] = $re['error'];
             }
         } else {
             switch ($data['type']) {
                 case 'folder':
                     //创建目录
                     if ($re = IO::CreateFolder($path, $data['name'])) {
                         if (isset($re['error']) && intval($re['error_code']) != 31061) {
                             $data['success'] = $arr['error'];
                         } else {
                             $data['newdata'] = $re['icoarr'];
                             $data['success'] = true;
                             $contents = C::t('icos')->fetch_all_by_pfid($data['oid']);
                             foreach ($contents as $key => $value) {
                                 $data['contents'][$key] = self::CopyTo($value['icoid'], $re['folderarr']['path']);
                             }
                         }
                     }
                     break;
                 case 'shortcut':
                 case 'discuss':
                 case 'dzzdoc':
                 case 'user':
                 case 'link':
                 case 'music':
                 case 'video':
                 case 'topic':
                 case 'app':
                     //这些内容不能移动到api网盘内;
                     $data['success'] = lang('message', '非文件类只能存储在企业盘');
                     break;
                 default:
                     $re = IO::multiUpload($icoid, $path, $data['name']);
                     if ($re['error']) {
                         $data['success'] = $re['error'];
                     } else {
                         $data['newdata'] = $re;
                         $data['success'] = true;
                     }
                     break;
             }
         }
     } catch (Exception $e) {
         $data['success'] = $e->getMessage();
     }
     $data['iscopy'] = $iscopy;
     return $data;
 }
Esempio n. 4
0
 /**
  * 移动文件到目标位置
  * @param string $opath 被移动的文件路径
  * @param string $path 目标位置(可能是同一api内或跨api,这两种情况分开处理)
  * @return icosdatas
  */
 public function CopyTo($opath, $path, $iscopy)
 {
     static $i = 0;
     $i++;
     $oarr = self::parsePath($opath);
     $arr = IO::parsePath($path);
     $jss = self::init($opath);
     if (is_array($jss) && $jss['error']) {
         return $jss;
     }
     try {
         $data = self::getMeta($opath);
         switch ($data['type']) {
             case 'folder':
                 //创建目录
                 //exit($arr['path'].'===='.$data['name']);
                 if ($re = IO::CreateFolder($path, $data['name'])) {
                     if (isset($re['error'])) {
                         $data['success'] = $arr['error'];
                     } else {
                         $data['newdata'] = $re['icoarr'];
                         $data['success'] = true;
                         //echo $opath.'<br>';
                         $contents = self::listFilesAll($jss, $opath);
                         $value = array();
                         foreach ($contents as $key => $value) {
                             if ($value['path'] != $opath) {
                                 $data['contents'][$key] = self::CopyTo($value['path'], $re['folderarr']['path']);
                             }
                             $value = array();
                         }
                     }
                 } else {
                     $data['success'] = 'create folder failure';
                 }
                 break;
             default:
                 /*if($arr['bz']==$oarr['bz']){//同一个api时
                 			$arr=self::parsePath($path.$data['name']);
                 			$response=$jss->copy_object($oarr['bucket'],$oarr['object'],$arr['bucket'],$arr['object']);
                 			if(!$response->is_ok()){
                 				$data['success']=$response->status;
                 			}
                 			$meta=array(
                 						'Key'=>$arr['object'],
                 						'Size'=>$data['size'],
                 						'LastModified'=>$response->header['date'],
                 						);
                 			$data['newdata']=self::_formatMeta($meta,$arr);
                 			
                 			$data['success']=true;
                 		}else{*/
                 if ($re = IO::multiUpload($opath, $path, $data['name'])) {
                     if ($re['error']) {
                         $data['success'] = $re['error'];
                     } else {
                         $data['newdata'] = $re;
                         $data['success'] = true;
                     }
                 }
                 //}
                 break;
         }
         //	}
     } catch (Exception $e) {
         //var_dump($e);
         $data['success'] = $e->getMessage();
         return $data;
     }
     return $data;
 }
Esempio n. 5
0
 /**
  * 移动文件到目标位置
  * @param string $opath 被移动的文件路径
  * @param string $path 目标位置(可能是同一api内或跨api,这两种情况分开处理)
  * @return icosdatas
  */
 public function CopyTo($opath, $path, $iscopy)
 {
     static $i = 0;
     $i++;
     $oarr = self::parsePath($opath);
     $client = self::init($opath);
     $data = self::getMeta($opath);
     switch ($data['type']) {
         case 'folder':
             //创建目录
             //exit($arr['path'].'===='.$data['name']);
             if ($re = IO::CreateFolder($path, $data['name'])) {
                 if (isset($re['error']) && intval($re['error_code']) != 31061) {
                     $data['success'] = $arr['error'];
                 } else {
                     $data['newdata'] = $re['icoarr'];
                     $data['success'] = true;
                     //echo $opath.'<br>';
                     $contents = self::listFilesAll($client, $opath);
                     $value = array();
                     foreach ($contents as $key => $value) {
                         if ($value['path'] != $opath) {
                             $data['contents'][$key] = self::CopyTo($value['path'], $re['folderarr']['path']);
                         }
                         $value = array();
                     }
                 }
             } else {
                 $data['success'] = 'create folder failure';
             }
             break;
         default:
             if ($arr['bz'] == $oarr['bz']) {
                 //同一个api时
                 $arr = self::parsePath($path . $data['name']);
                 $err = Qiniu_RS_Move($client, $arr['bucket'], $arr['object'], $oarr['bucket'], $oarr['object']);
                 if ($err !== null) {
                     $data['success'] = $err->Code . ':' . $err->Err;
                 } else {
                     $data['newdata'] = self::getMeta($path . $data['name']);
                     $data['success'] = true;
                 }
             } else {
                 if ($re = IO::multiUpload($opath, $path, $data['name'])) {
                     if ($re['error']) {
                         $data['success'] = $re['error'];
                     } else {
                         $data['newdata'] = $re;
                         $data['success'] = true;
                     }
                 }
             }
             break;
     }
     return $data;
 }