TOOL更新_配信動画の”*.wmv”をダウンロードできるようにした。
”*.wmv”をダウンロードできるようにした。
ストリーム配信に”*.asx”を使っている。このままだと”*.wmv”をダウンロードすることができない。”ダウンロードして自PCで見たい”というリクエストがあった。方法を2通り考えた。
1.ダウンロードプログラムを使うやり方
「pubFlDld.php」を新規作成 これにより「http://kazpgm.ddo.jp/kaz01u/upload/」配下のファイルをダウンロードする。
2.普通のやり方
http://kazpgm.ddo.jp/kaz01u/upload/doc/Admin_pgm_Doc.wmvのリンクを作る。 「Windows Media Player」が立ち上がります。 映像が開始されるまで待ってください。 停止ボタンを押下してください。 全画面表示されていないときは、全画面表示にしてください。 メニューから 「ファイル」 → 「メディアに名前をつけて保存」を選択してください。 ファイル名を変えずに任意のフォルダに保存してください。 という文章をWEB画面に記述する。
3.今回は「1.ダウンロードプログラムを使うやり方」を選んだ。(phpプログラム作成したいからという単純な理由。ストリーム配信画面がすでにあるのにさらに映像画面が出るのはどうかな。と、説明文を記述するとしつこいな。という考え。)
・でかいファイルを落とす時、このロジックにしないとバッファオーバーフローになります。 (このサーバーの場合130MB越えぐらいで) ・(1024*8)バイトづつ処理する。 ・スクリプト実行の最大秒数。0:時間制限なしにする。 ・PHPの出力バッファを強制出力する。 ・WEBバッファに出力するようにする。 <=2009/07/12 パス・トラバーサル脆弱性対応。 「'\'を/に変更する。./はエラーにする。ファイル名チェック。ファイルがないときはエラーにする。」を 追加した ・新規作成した「pubFlDld.php」 <? // ======================================================== // pubFlDld.php ---- ファイルダウンロードプログラム // 2009 kaz PHP自動作成◎自動生成お助けTOOL.(http://kazpgm.ddo.jp/) // 修正BSDライセンス。 // 2009/07/11 - 新規作成。 // http://d.hatena.ne.jp/kazpgm/20090711/1247302296 // ======================================================== $_REQUEST['fname'] = str_replace('\\', '/', $_REQUEST['fname']); // '\'を/に変更する。 if (ereg("\.\/", $_REQUEST['fname'])) { // ./はエラーにする。 echo "faild file name. 01"; exit; } if (!ereg("^doc\/[0-9a-zA-Z_\-]+\.[0-9a-zA-Z_\-]+$", $_REQUEST['fname'])) { // ファイル名チェック。 echo "faild file name. 03"; exit; } if (!is_file(dirname(__FILE__) . '/upload/' . $_REQUEST['fname'])) { // ファイルがないときはエラーにする。 echo "faild file name. 02"; exit; } $handle = fopen(dirname(__FILE__) . '/upload/' . $_REQUEST['fname'], "rb"); if ( !$handle ) { echo "faild file name. 04"; exit; } $flen = filesize(dirname(__FILE__) . '/upload/' . $_REQUEST['fname']); $path_parts = pathinfo(dirname(__FILE__) . '/upload/' . $_REQUEST['fname']); header("Content-Disposition: attachment; filename=" . $path_parts['basename']); header("Content-Type: application/octet-stream"); header("Cache-Control: public"); header("Pragma: public"); header('Content-Length: ' . $flen); $contents = ''; while(!feof($handle)) { set_time_limit(0); // スクリプト実行の最大秒数。0:時間制限なし print(fread($handle, 1024*8)); ob_flush(); // PHPの出力バッファを強制出力します。 flush(); // Webサーバの出力バッファを強制出力します。 } fclose($handle); ?>
4.追加したWEB画面
http://kazpgm.ddo.jp/outlineDoc.html http://kazpgm.ddo.jp/IntroductionDoc2.html http://kazpgm.ddo.jp/IntroductionDoc7.html 「何度も見る場合、ここをクリックしてダウンロードしてください。」のリンク 内容例) ==<<outlineDoc.html追加start>>== <a href="http://kazpgm.ddo.jp/kaz01u/pubFlDld.php?fname=doc/kaz_PHPTOOL_Admin01doc.wmv" ><b>何度も見る場合、ここをクリックしてダウンロードしてください。</b><br /> <font size=1>(56Mbなので「ダウンロード」の「保存」ボタン押下後20秒ぐらいかかってから「名前を付けて保存」ダイヤログが出ます。)</font></a> <br /> ==<<outlineDoc.html追加end>>==
補足)以前に「秘密ファイルダウンロード」で「flDld.php」を作ったが今回みたいなでかいファイルはダウンロードできないロジックになっている。
追加)http://kazpgm.ddo.jp/IntroductionDoc2.htmlの「(3)・・・」に(音声と映像にずれがありちょっと見づらいので、原本1から11別々に配信するように変更する予定です。)を追加した。
<=2009/07/13 01:00 原本9本を連続配信するようにasxを修正した。今は音声と映像ずれていない。
11:00-19:00