示例#1
0
 public static function backup($filename, $channelId, $removeAfterBackup = false)
 {
     $serv = StorageServer::getFreestServer();
     $relativepath = "uploads/{$channelId}/{$filename}";
     if ($serv !== false) {
         $hash = hash_hmac('sha256', $serv->address, $serv->private_key);
         $err = file_get_contents($serv->address . 'mkdir.php?cid=' . $channelId . '&hash=' . $hash);
         $filepath = ROOT . $relativepath;
         $addr = preg_replace("#^https?://([a-zA-Z0-9.-]+)(/.*)?\$#", "\$1", $serv->address);
         shell_exec("scp {$filepath} " . $serv->user . "@{$addr}:" . $serv->path . $relativepath . "");
         if ($removeAfterBackup) {
             unlink($filepath);
         }
         if (class_exists('Backup')) {
             Backup::create(array('channel_id' => $channelId, 'filepath' => $filepath, 'server' => $serv->address));
         }
     }
     return $serv->address . $relativepath;
 }
示例#2
0
 public static function upload($file, $type, $fileId, $channelId, $default = '', $backup = false)
 {
     if (!file_exists(ROOT . 'uploads/')) {
         mkdir(ROOT . 'uploads');
     }
     if (!file_exists(ROOT . 'uploads/' . $channelId . '/')) {
         mkdir(ROOT . 'uploads/' . $channelId);
     }
     if ($file['name'] != '') {
         $name = $file['name'];
         $ext = explode('.', $name);
         $ext = $ext[count($ext) - 1];
         switch ($type) {
             case 'vid':
                 if (in_array(strtolower($ext), array('webm', 'mp4', 'm4a', 'mpg', 'mpeg', '3gp', '3g2', 'asf', 'wma', 'mov', 'avi', 'wmv', 'ogg', 'ogv', 'flv', 'mkv'))) {
                     $path = 'uploads/' . $channelId . '/' . $fileId . '.' . $ext;
                     move_uploaded_file($file['tmp_name'], ROOT . $path);
                     $duration = self::getVideoDuration(ROOT . $path);
                     StorageServer::lockFreestServer();
                     self::convert(ROOT . $path);
                     $serv = StorageServer::getFreestServer();
                     return array($serv->address . $path, $duration);
                 }
                 break;
             case 'img':
                 if (in_array(strtolower($ext), array('jpeg', 'jpg', 'png', 'gif', 'tiff', 'svg'))) {
                     $path = 'uploads/' . $channelId . '/' . $fileId . '.' . $ext;
                     move_uploaded_file($file['tmp_name'], ROOT . $path);
                     if ($backup) {
                         StorageServer::backup($fileId . '.' . $ext, $channelId);
                     }
                     return WEBROOT . $path . '?' . time();
                 }
                 break;
         }
     }
     return $default;
 }