PHP ブレークポイント再開関数_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:07:06
オリジナル
1196 人が閲覧しました

再開可能なアップロードとは、アップロード中にアップロードタスク(ファイルまたは圧縮パッケージ)を人為的にいくつかの部分に分割し、各部分をスレッドを使用してアップロードすることを指します。PHPの再開可能なアップロード機能の実装方法を見てみましょう。

再開可能なアップロードとは、アップロード中にアップロードタスク(ファイルまたは圧縮パッケージ)を人為的にいくつかの部分に分割し、各部分をスレッドを使用してアップロードすることを指します。PHPの再開可能なアップロード機能の実装方法を見てみましょう。

/**
* 著者 ユウエンシュイ
* 再開可能なダウンロードをサポート
* * コード例:
* * $down = 新しい SD_DownLoad();
* * $down->Down('E:/iso/MS.Office2003SP1.CHS.iso');
**/
クラス SD_DownLoad {

/**
* ダウンロードの開始点
*
* @アクセス非公開
* @var 整数
*/
プライベート $mDownStart;

/**
*ファイルサイズ
*
* @アクセス非公開
* @var 整数
*/
プライベート $mFileSize;

/**
* ファイルハンドル
*
* @アクセス非公開
* @var 整数
*/
プライベート $mFileHandle;

/**
*ファイルのフルパス
*
* @アクセス非公開
* @var 文字列
*/
プライベート $mFilePath;

/**
※ファイルをダウンロードする際に表示されるファイル名
*
* @アクセス非公開
* @var 文字列
*/
プライベート $mFileName;

/**
* コンストラクター
*
* @アクセス公開
* @return void
**/
パブリック関数 __construct() {
}

/**
*ダウンロード
*
* @param string $pFilePath ファイルのフルパス
* @param string pFileName ファイルをダウンロードするときに表示されるファイル名、デフォルトは実際のファイル名です
* @アクセス公開
* @return void
**/
パブリック関数 Down($pFilePath, $pFileName = '') {
$this->mFilePath = $pFilePath;
if(!$this->IniFile()) $this->SendError();
$this->mFileName = empty($pFileName) ? $this->GetFileName() : $pFileName;

$this->IniFile();
$this->SetStart();
$this->SetHeader();

$this->Send();
}


/**
* 初期化ファイル情報
*
* @アクセス非公開
* @return boolean
**/
プライベート関数 IniFile() {
if(!is_file($this->mFilePath)) return false;
$this->mFileHandle = fopen($this->mFilePath, 'rb');
$this->mFileSize = ファイルサイズ($this->mFilePath);
true を返します;
}

/**
*ダウンロード開始ポイントを設定します
*
* @アクセス非公開
* @return void
**/
プライベート関数 SetStart() {
if (!empty($_SERVER['HTTP_RANGE']) && preg_match("/^bytes=([d]?)-([d]?)$/i", $_SERVER['HTTP_RANGE'], $match) ){
if(empty($match[1])) $this->mDownStart = $match[1];
fseek($this->mFileHandle, $this->mDownStart);
}
他に{
$this->mDownStart = 0;
}
}

/**
* httpヘッダーを設定します
*
* @アクセス非公開
* @return void
**/
プライベート関数 SetHeader() {
@header("キャッシュ制御: public");
@header("プラグマ: public");
Header("Content-Length: " . ($this->mFileSize - $this->mDownStart));
if ($this->mDownStart > 0) {
@Header("HTTP/1.1 206 部分コンテンツ");
Header("Content-Range: bytes" . $this->mDownStart . "-" . ($this->mFileSize - 1) . "/" . $this->mFileSize);
}
他に{
Header("Accept-Range: バイト");
}
@header("Content-Type: application/octet-stream");
@header("Content-Disposition:attachment;filename=" . $this->mFileName);
}

/**
* フルパスのファイル名部分を取得します
*
* @アクセス非公開
* @戻り文字列
**/
プライベート関数 GetFileName() {
ベース名を返す ($this->mFilePath);
}

/**
*データ送信
*
* @アクセス非公開
* @return void
**/
プライベート関数 Send() {
fpassthru($this->mFileHandle);
}

/**
*送信エラー
*
* @アクセス公開
* @return void
**/
パブリック関数 SendError() {
@header("HTTP/1.0 404 が見つかりません");
@header("ステータス: 404 見つかりません");
exit();
}
}
?>

www.bkjia.com 本当 http://www.bkjia.com/PHPjc/630477.html 技術記事 アップロードの再開とは、アップロード時にアップロード タスク (ファイルまたは圧縮パッケージ) を人為的にいくつかの部分に分割し、各部分をスレッドを使用してアップロードすることを指します。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!