private static function get_curl_binary(){ $size = self::getRemoteFileSize(self::$flv_url); if($size == 0){ OC_ocDownloaderPB::setError($l->t('Filesize is null')); exit(); } $chunkSize = self::getChunkSize($size); self::$fp = fopen(self::$flv_url, 'rb'); $received = $last = 0; while(!feof(self::$fp)){ $data = @fread(self::$fp, $chunkSize); if($data == ''){ break; } $saved = fwrite(self::$fs, $data); if($saved > -1){ $received += $saved; } if($received >= $size){ $percent = 100; }else{ $percent = @round(($received/$size)*100, 2); } if($received > $last + $chunkSize){ OC_ocDownloaderPB::setProgressBarProgress($percent); $last = $received; } usleep(100); } OC_ocDownloaderPB::setProgressBarProgress(100); OC_ocDownloader::setUserHistory(self::$final_flv_filename, 1); fclose(self::$fp);fclose(self::$fs); }
/** * Get the file by an URL * @param $url URL of the file * @param $path Simple path of the file * @param $l Lang * @param $overwrite Overwrite the target file */ public static function getFile($url, $path, $l, $overwrite = 0){ try{ $code = 0; if(!self::checkFileAccess($url, $code)){ OC_ocDownloaderPB::setError($l->t(self::$errors[$code])); exit(); } $pathinfo = pathinfo($path); $fs = OCP\Files::getStorage('files'); if($fs->file_exists('/Downloads/' . $pathinfo['basename']) && !$overwrite){ $pathinfo['basename'] = md5(rand()) . '_' . $pathinfo['basename']; } $fs = $fs->fopen('/Downloads/' . $pathinfo['basename'], 'w'); $size = self::getRemoteFileSize($url); if($size == 0){ OC_ocDownloaderPB::setError($l->t('Filesize is null')); exit(); } $chunkSize = self::getChunkSize($size); $fp = fopen($url, 'rb'); $received = $last = 0; while(!feof($fp)){ $data = @fread($fp, $chunkSize); if($data == ''){ break; } $saved = fwrite($fs, $data); if($saved > -1){ $received += $saved; } if($received >= $size){ $percent = 100; }else{ $percent = @round(($received/$size)*100, 2); } if($received > $last + $chunkSize){ OC_ocDownloaderPB::setProgressBarProgress($percent); $last = $received; } usleep(100); } OC_ocDownloaderPB::setProgressBarProgress(100); OC_ocDownloader::setUserHistory($pathinfo['basename'], 1); fclose($fp);fclose($fs); }catch(exception $e){ OC_ocDownloaderPB::setError($l->t('Unknown error')); } }
/** * Get file * @param $path The remote file path * @param $l Lang * @param $overwrite Overwrite the target file */ public static function getFile($path, $l, $overwrite){ try{ $pathinfo = pathinfo($path); $fs = OCP\Files::getStorage('files'); if($fs->file_exists('/Downloads/' . $pathinfo['basename']) && !$overwrite){ $pathinfo['basename'] = md5(rand()) . '_' . $pathinfo['basename']; } $size = self::getRemoteFileSize($path); if($size == 0){ OC_ocDownloaderPB::setError($l->t('Filesize is null')); self::closeConnection(); exit(); } $chunkSize = self::getChunkSize($size); $received = $last = 0; $ret = ftp_nb_get(self::$conn, $fs->getLocalFile('/Downloads/' . $pathinfo['basename']), $path, FTP_BINARY); while($ret == FTP_MOREDATA){ $received += $fs->filesize('/Downloads/' . $pathinfo['basename']); if($received >= $size){ $percent = 100; }else{ $percent = @round(($received/$size)*100, 2); } if($received > $last + $chunkSize){ OC_ocDownloaderPB::setProgressBarProgress($percent); $last = $received; } usleep(100); $ret = ftp_nb_continue(self::$conn); } if($ret != FTP_FINISHED){ OC_ocDownloaderPB::setError($l->t('Download error')); self::closeConnection(); exit(); }else{ OC_ocDownloaderPB::setProgressBarProgress(100); OC_ocDownloader::setUserHistory($pathinfo['basename'], 1); } self::closeConnection(); }catch(exception $e){ OC_ocDownloaderPB::setError($l->t('Unknown error')); } }