-
- `downloads` が存在しない場合はテーブルを作成 (
- `id` int(6) unsigned NOT NULL AUTO_INCREMENT,
- `filename` varchar(50) NOT NULL,
- `savename` varchar(50) NOT NULL,
- `downloads` int(10) unsigned NOT NULL DEFAULT '1',
- PRIMARY KEY (`id`),
- UNIQUE KEY `filename` (`filename`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
コードをコピー
デモを直接ダウンロードして SQL ファイルをインポートすることもでき、データはすべてそこにあります。
ダウンロード アドレス: PHP ファイルのダウンロード数統計のソース コード。
2番目、HTML部分
次の HTML 構造をindex.html ページ本体に追加します。ここでは、ファイル リストの表示に ul.filelist が使用されており、コンテンツはなくなり、jQuery がファイル リストの非同期読み取りに使用されます。
jQuery ライブラリ ファイルを HTML でロードする必要もあります。
-
-
-
- 3、CSS一部
デモでページの効果をより適切に表示できるようにするために、次のコードは主にファイル リストの表示効果を設定するために使用されます。 もちろん、実際のプロジェクトでは、必要に応じて対応するスタイルを設定できます。
#demo{width:728px;margin:50px auto;padding:10px;border:1pxソリッド#ddd;background-color:#eee;} ul.filelist li{background:url("img/ bg_gradient.gif") リピート x 中央下 #F5F5F5; border:1px ソリッド #ddd;border-top-color:#fff;list-style:none;position:relative;} ul.filelist li.load{background :url("img/ajax_load.gif") no-repeat; border:none; 左:150px; - ul.filelist; :block;padding:8px;}
- ul.filelist li a:hover .download{display:block;}
- span.download{background-color:#64b126;border:1px Solid #4e9416;color:white
- display: none;font-size:12px;padding:2px 4px;position:absolute;right:8px;
- text-decoration:none;text-shadow:0 0 1px #315d0d;top:6px; 3px;-webkit-border-radius:3px;border-radius:3px;}
- span.downcount{color:#999;padding:5px;position:absolute; margin-left:10px;text-decoration:none;}
-
-
-
- コードをコピー
-
-
- 4、PHP部分
-
わかりやすくするために、これは 2 つの PHP ファイルに分かれています。1 つは filelist.php で、mysql データ テーブルのデータを読み取り、フロントエンドのindex.html ページを呼び出すためにデータを JSON 形式で出力するために使用されます。もう 1 つは download.php で、ダウンロード アクションに応答するために使用されます。
、対応するファイルのダウンロード数を更新し、ブラウザ経由でダウンロードを完了します。
実際、データベース接続ファイル conn.php もダウンロード圧縮パッケージに含まれています。ここをクリックしてダウンロードしてください。
filelist.php は、ダウンロード テーブルを読み取り、json_encode() を通じて JSON 形式でデータを出力します。これは、次の Ajax 非同期操作のために準備されています。
require 'conn.php'; //データベースに接続します $result = mysql_query("SELECT * FROM downloads"){ while ($ row=mysql_fetch_assoc($result)){ $data[] = array( 'id' => $row['id'],
'file' => $row['filename'], - 'ダウンロード '=> $row['ダウンロード']
- }
- echo json_encode($data)
-
-
- コードをコピーします。
download.phpはURLに従ってパラメータを渡し、該当するデータを取得するためにクエリを実行し、ダウンロードするファイルが存在するかどうかを検出し、存在する場合は該当するデータのダウンロード数を+1して更新し、header()を使用します。ダウンロード機能を実装します。 header() 関数を使用することは言及する価値があります。
、ファイルを強制的にダウンロードし、ダウンロード後にローカルに保存されるファイル名を設定できます。
通常の状況では、アップロードされたファイルは、バックグラウンドのアップロード プログラムによって名前が変更され、サーバーに保存されます。この利点の 1 つは、ファイル名の重複や中国語名の文字化けを回避できることです。 。
ローカルにダウンロードされたファイルの場合は、header("Content-Disposition:attachment; filename=" .$filename) を使用して、ファイル名を簡単に識別できるファイル名に設定できます。
-
- require('conn.php'); //データベースに接続します
- $id = (int)$_GET['id']
-
- if(!isset($id); ) | $id==0) die('パラメータが間違っています!');
- $query = mysql_fetch_array($query); if( !$row) exit;
- $filename = iconv('UTF-8','GBK',$row['filename']);//中国語名の変換エンコーディングに注意してください
- $savename = $row['savename']; //サーバー上の実際の保存名
- $myfile = 'file/'.$savename
- if(file_exists($myfile)){//ファイルが存在する場合
- //ダウンロード時間を更新します
- mysql_query("update downloads set downloads =downloads+1 where id='$id'");
- //ファイルをダウンロード
- $file = @ fopen($myfile, "r"); application/octet-stream");
- header("Content-Disposition:attachment; filename=" .$filename );
- while (!feof($file)) {
- echo fread($file, 50000);
- }
- fclose($file);
- exit ;
- }else{
- echo 'ファイルが存在しません! ';
- }
- コードをコピー
5、jQuery部分
フロントエンドページの jQuery は主に 2 つのタスクを実行します。1 つは、Ajax を介してファイルリストを非同期に読み取って表示することです。もう 1 つは、ユーザーのクリックイベントに応答して、対応するファイルのダウンロード数を 1 増やすことです。
コード:
$(function(){ - $.ajax({ //非同期リクエスト
- type: 'GET',
- url: 'filelist.php',
- dataType: 'json',
- キャッシュ: false、
- beforeSend: function(){
- $(".filelist").html("
- 読み込み中...
");
- 成功: function(json){
- if(json){
- var li = '';
- $.each(json,function(index,array){
- li = li + '
- '+array['file']+
- ''+ array ['ダウンロード']+'
- クリックしてダウンロード
'
- $( " .filelist").html(li);
- }
- }
- });
- $('ul.filelist a').live('click',function(){
- var count = $('.downcount' , this);
- count.text(parseInt(count.text())+1); //ダウンロード数+1
- });
-
-
-
- まず、ページがロードされます最後に、$.ajax() を通じてバックグラウンドの filelist.php に GET の形式で Ajax リクエストを送信します。 filelist.php が正常に応答すると、返された json データを受け取り、$.each() を通じて json データ オブジェクトを走査します。そして HTML 文字列を構築します。
そして、最後の文字列を ul.filelist に追加して、デモのファイル リストを形成します。
-
- その後、ファイルがクリックされてダウンロードされると、動的に追加されたリスト要素のクリックイベントがlive()で応答され、ダウンロード数が蓄積されます。
-
最後に、この記事を読んだ後、これは一般的に使用される Ajax のケースであり、ダウンロードを実現するために PHP と mysql を組み合わせた知識もあります。
|