PHPでアップロードの進行状況バーを取得する方法を知っている人はいますか? フォト アルバム アップローダのコードを記述しようとしています。写真のアップロード中にプログレスバーを表示したいと思います。
私はphpにかなり慣れていないので、それについてすべてを知りません。
PHPでアップロードの進行状況バーを取得する方法を知っている人はいますか? フォト アルバム アップローダのコードを記述しようとしています。写真のアップロード中にプログレスバーを表示したいと思います。
私はphpにかなり慣れていないので、それについてすべてを知りません。
これは、私が見つけた中で最も設定が簡単で、最も優れたアップローダーです。
https://github.com/FineUploader/fine-uploader
APC やその他の外部 PHP ライブラリは必要ありません。共有ホストでファイルの進行状況のフィードバックを取得できます。また、html5 のドラッグ アンド ドロップ (個人的には未テスト) と複数のファイルのアップロードをサポートしていると主張しています。
申し訳ありませんが、私の知る限り、純粋な PHP アップロード プログレス バー、または PHP/Javascript アップロード プログレス バーでさえも、PHP の仕組みにより不可能です。最善の策は、何らかの形式の Flash アップローダを使用することです。
AFAIK これは、$_FILES を含むすべてのスーパーグローバルが読み込まれるまでスクリプトが実行されないためです。PHP スクリプトが呼び出されるまでに、ファイルは完全にアップロードされます。
編集:これはもはや真実ではありません。2010年でした。
私にとってうまくいったPHPっぽい(5.2+)&フラッシュなしの方法:
まず、「uploadprogress」拡張機能を起動して実行する方法を説明しているこの投稿を参照してください。
次に、ファイルのアップロード元のフォームを含むページで、次の iframe を作成します。
<iframe id="progress_iframe" src="" style="display:none;" scrolling="no" frameborder="0"></iframe>
次に、このコードを [送信] ボタンに追加します。
onclick="function set() { f=document.getElementById('progress_iframe'); f.style.display='block'; f.src='uploadprogress.php?id=<?=$upload_id?>';} setTimeout(set);"
これで、フォームに非表示の iframe が表示され、[送信] をクリックしてファイルのアップロードを開始すると、uploadprogress.php の内容が表示されます。$upload_id は、フォームの非表示フィールド「UPLOAD_IDENTIFIER」の値として使用しているものと同じでなければなりません。
uploadprogress.php 自体は次のようになります (必要に応じて修正および調整します)。
<html>
<head>
<META HTTP-EQUIV='REFRESH' CONTENT='1;URL=?id=<?=$_GET['id']?>'>
</head>
<body>
Upload progress:<br />
<?php
if(!$_GET['id']) die;
$info = uploadprogress_get_info($_GET['id']);
$kbytes_total = round($info['bytes_total'] / 1024);
$kbytes_uploaded = round($info['bytes_uploaded'] / 1024);
echo $kbytes_uploaded.'/'.$kbytes_total.' KB';
?>
</body>
</html>
は毎秒セルフリフレッシュされることに注意してください。必要に応じて、ここに素敵な視覚的な進行状況バー (異なる色の 2 つのネストされた <div> など) を追加できます。アップロードの進行状況を示す iframe は、当然、アップロードの進行中にのみ機能し、フォームが送信されてブラウザーが次のページにリロードされると、表示された寿命が終了します。
GearsとHTML5には、HttpRequest
AJAXを介してファイルのアップロードを送信するためのprogressイベントがオブジェクトにあります。
http://developer.mozilla.org/en/Using_files_from_web_applications
他の人がすでに答えている他のオプションは次のとおりです。
技術的には、YouTubeのアップロードと同様に4番目のオプションがあります。GearsまたはHTML5では、blobを使用してファイルを小さなチャンクに分割し、各チャンクを個別にアップロードできます。各チャンクが完了すると、進行状況を更新できます。
HTML5では、ファイルアップロードの進行状況を監視できるファイルアップロードAPIが導入されましたが、古いブラウザの場合は、ファイルアップロードを監視し、それらに関する情報を提供するために特別に作成されたフレームワークがpluploadにあります。さらに、コールバックがたくさんあるので、すべてのブラウザで機能します
もう 1 つのアップローダ フル JS : http://developers.sirika.com/mfu/
楽しんで
プログレス バーを作成するには、Javascript を使用する必要があります。簡単な Google 検索で、この記事にたどり着きました: WebAppers Simple Javascript Progress Bar with CSS。
Dojo File Upload Progress Bar Widgetは、Dojo Javascript フレームワークを使用する別のオプションです。
編集: 多数の画像 (フォト アルバムなど) をアップロードし、それらを PHP スクリプトに投稿すると仮定すると、javascript を使用して投稿から結果を読み取り、アップロードされた画像の数に基づいて進行状況バーを更新できます。 / 画像の総数。これには、各投稿が完了した後にのみ更新されるという副作用があります。JS で投稿する方法については、こちらをご覧ください。