ローカル ファイルがサーバーにアップロードされた後、サーバー スクリプトはファイルをマシンの特定のディレクトリに
ファイルとして保存する方法が一般的です。ファイル名が重複すると、一部のプログラムはファイル名の一意性を確保するために、ファイル名を自動的に変更し、ファイル名にアップロード時刻を追加するため、ファイルの元の名前が失われます。ファイル情報には多くの困難があり、ファイルを一元的に管理することは困難です。その 1 つは、ファイルをデータベースに保存し、データベースの強力な機能を使用してさまざまな操作を簡単に実行することです。ファイル。この記事では 2 番目の方法
を使用します。
この一連のプログラムは、Web ページを通じてハードディスクからサーバーのデータベースにファイルをアップロードし、
がファイルの内容を読み取る方法を示します。
使用手順:
プログラムは全部で 5 つあり、その手順は次のとおりです:
1. file.sql --- このプログラムで使用するデータベース テーブルの構造[注: 使用するデータベースは test ]
2. Upload.php --- フォームをアップロード
3. submit.php --- ハンドラーをアップロード
4. show_info.php ---アップロードされたファイル情報
5. show_add.php --- [ダウンロード] ファイルを表示
//////////////////////// ///////// /////////////////////////////////////
(1) file.sql ---
//簡単な説明
アップロードされたファイルの基本情報を保存するデータベース構造 ここで、ファイルの内容を保存するフィールドに注目してください。
通常の BLOB タイプは最大 64K バイトを保存できるためです。また、一般に、PHP のデフォルト設定ではアップロード ファイルの最大サイズは 2M です。アップロードされるファイルが特に大きい場合は、php.ini の設定を調整することを忘れないでください。
//ファイルソースコード
create table accept(
id int NOT NULL auto_increment, #主キー, 自動蓄積
file_data longblob, 🎜> file_name varchar(255), #文件名文字
file_size int, #文件大小
主キー(id) #主键
)
////////// ////////////// /////////////////////////////////////////////////
(2) Upload.php ---
//簡単な説明
アップロード インターフェイス、ユーザーはファイルを選択し、それを処理のために submit.php に送信します
価値があります。 MAX_FILE_SIZE の隠し値フィールドの VALUE を設定することで、アップロードされるファイルのサイズを
制限できます。
//プログラムソースコード
////////// /////////////////////////////// ////////////////// //
(3) submit.php ---
//簡単な説明
ユーザーがアップロードしたファイルを、ファイルの基本情報とともに置きます その情報はデータベースに保存されます
/ /プログラムソースコード
<?php
if($ myfile!= "none" && $ myfile!= ""){//アップロードされたファイル
/コンテンツを文字列に変換
$fp=fopen($myfile, "rb");
if(!$fp) die("ファイル オープン エラー");
$file_data =addslashes (fread($fp) , filesize($myfile)));
fclose($fp);
// ファイル形式、名前、サイズ
🎜> $file_name=$myfile_name;
$file_size=$myfile_size;
//データベースに接続し、ファイルをデータベースに保存します
$conn=mysql_connect("127.0 .0.1", "***","***");
if(!$conn) die("エラー: mysql 接続に失敗しました");
mysql_select_db("test",$conn); 🎜> $sql="受信に挿入
(file_data,file_type,file_name,file_size)
値 ('$file_data','$file_type','$file_name',$file_size)"; > $result=mysql_query($sql);
//次の文は今挿入したステートメントの ID を取り出します
$id=mysql_insert_id()
mysql_close ($ conn);
set_time_limit(30); // デフォルトのタイムアウト設定を復元します
echo "アップロードされたファイル情報を表示";
}
else {
echo "ファイルはアップロードされていません";
}
?>
////////////////////////////////////////// // ///////////////////////////
(4) show_info.php ---
//簡単な説明
データベースからファイルの基本情報[ファイル名とファイルサイズ]を取得します。
//プログラムソースコード
$conn=mysql_connect(" 127.0.0.1","***","***");
if(!$conn) die("error: mysql connect failed ");
mysql_select_db("test",$conn);
$sql = "select file_name,file_size from accept where id= $id";
$result = mysql_query($sql) ;
if(!$result) die(" error: mysql query");
//指定されたレコードがない場合、エラーが報告されます
$num=mysql_num_rows($result);
if($num<1) die("error: no this Recorder");
//次の 2 つのプログラム次のように書くこともできます
//$row=mysql_fetch_object($result);
//$name=$row->name;
//$size=$row->size;
$name = mysql_result($result,0,"file_name");
$size = mysql_result($result,0,"file_size");
mysql_close($conn); >
echo "
アップロードされたファイル情報:";
echo "
ファイルの名前 - $name";
echo "
ファイルのサイズ - $size";
echo "
添付ファイル";
//////// ///////////////////////////////////////////////// ///////////////
(5) show_add.php ---
//簡単な説明
データベースからファイルの内容を取得します
//プログラムソースコード
//レコードを見つけて読み出します
$conn=mysql_connect("127.0. 0.1","***","* **");
if(!$conn) die("エラー: mysql 接続に失敗しました");
mysql_select_db("test",$conn);
$sql = "select * from accept where id=$id";
$result = mysql_query($sql);
if(!$result) die("error: mysql query"); >
$num=mysql_num_rows($result );
if($num<1) die("エラー: このレコーダーはありません");
$data = mysql_result($result,0, "ファイルデータ");
$type = mysql_result($result,0,"file_type");
$name = mysql_result($result,0,"file_name"); conn);
// まず、対応するファイルヘッダを出力し、元のファイル名を復元します。
header("Content-type:$type");
header("Content-Disposition:attachment; filename=$name");
echo $data;
?>
このプログラムは、win2000 pro apache 1.13.19 php 4.0.5 mysql 3.23.36 で合格しました。