PHP はどのようにしてデータベースにファイルをアップロードしますか? ここでは、PHP でファイルを MySQL データベースに保存する方法と、PHP でファイルをアップロードしてデータベースに保存する方法をマスターします。
phpがデータベースにファイルをアップロード このファイルを保存するには、データベースにlongblobフィールドを作成するだけです。 ただし、4~5mのファイルをアップロードする場合、この時点で注意が必要な問題がいくつかあります 1、php.iniを変更します post_max_size アップロード_最大ファイルサイズ2つのパラメータの値は、アップロードする必要があるファイルのサイズより大きくしてください 2、my.cnfを変更します mysqlデータベースのmax_allowed_packetパラメータの値を変更します。 このパラメータの意味は次のとおりです。 max_allowed_packet バッグの最大サイズ。メッセージ バッファは net_buffer_length バイトに初期化されますが、必要に応じて max_allowed_packet バイトまで増やすことができます。デフォルトでは、この値は小さすぎるため、大きな (エラーの可能性がある) パケットをキャプチャできません。大きな BLOB 列を使用している場合は、この値を増やす必要があります。使用する最大の BLOB と同じ大きさにする必要があります。 1. PHP は画像をデータベースにアップロードします 3つのphpファイルを作成します: readdir.php - 画像をデータベースに入れるコード image.php - 実際の画像を表示するコード view.php - データベースから画像を呼び出す方法を示すコード 1.データベースを作成する テーブル `images` を作成 ( `imgid` int null ではない auto_increment、 `sixfourdata` ロングテキストが null ではありません。 主キー (`imgid`) );readdir.php 具体的な内容: $dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); ?> 'ディレクトリを開く必要があります 「。/」 「readdir.php」ファイルは次のディレクトリにあります。 $path = "./"; $dir_handle = opendir($path) または die("ディレクトリ $path を開けません");画像を分類し、使用されているデータの一部を読み出す フォーペン '変換する Base64_encode 'テーブルに挿入 while ($file = readdir($dir_handle)) { $filetyp = substr($file, -3); if ($filetyp == 'gif' or $filetyp == 'jpg') { $handle = fopen($path . "/" . $file,'r'); $file_content = fread($handle,filesize($path . "/" . $file)); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $sql = "insert into images set sixfourdata='$encoded'"; mysql_query($sql); } } ?>設定したディレクトリを閉じて処理します。 closedir($dir_handle); echo("complete"); mysql_close($dbcnx); ?>画像を読み取るコード: image.php $dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); ?>画像を読み出すために使用されるコード image.php?img=x: $img = $_request["img"]; ?>その後、データベースに接続して以下を読み取る必要があります。 $result = mysql_query("select * from images where imgid=" . $img . ""); if (!$result) { echo("リクエストエラー: " .mysql_error() . ""); 出口(); } while ($row = mysql_fetch_array($result)) { $imgid = $row["imgid"]; $encodeddata = $row["sixfourdata"]; } ?> mysql_close($dbcnx); echo base64_decode($encodeddata); ?> base64 でエンコードされた画像データ形式を理解します。 具体的な画像を見てみましょう! image.php?img=1 image.php?img=357 readdir.php: ############################### # データベース接続 # これらの値を変更します ############################### $dbcnx = mysql_connect("localhost", "ユーザー名", "パスワード"); mysql_select_db("base64imgdb"); ############################### # db connection # change these values ############################### $dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); $path = "./"; $dir_handle = opendir($path) または die("ディレクトリ $path を開けません"); while ($file = readdir($dir_handle)) { $filetyp = substr($file, -3); if ($filetyp == 'gif' または $filetyp == 'jpg') { $handle = fopen($file,'r'); $file_content = fread($handle,filesize($file)); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $sql = "画像に挿入 set sixfourdata='$encoded'"; mysql_query($sql); } } closedir($dir_handle); echo("完了"); mysql_close($dbcnx); ?> image.php: $dbcnx = mysql_connect("localhost", "ユーザー名", "パスワード"); $dbcnx = mysql_connect("localhost", "username", "password"); mysql_select_db("base64imgdb"); $img = $_request["img"]; $result = mysql_query("select * from image where imgid=" . $img . ""); if (!$result) { echo("クエリ実行エラー: " . mysql_error() . ""); 出口(); } while ($row = mysql_fetch_array($result) ) { $imgid = $row["imgid"]; $encodeddata = $row["sixfourdata"]; } mysql_close($dbcnx); エコーbase64_decode($encodeddata); ?> view.php (これを投稿する必要はありません..) .. ..2. PHP でファイルをアップロードしてデータベースに保存する方法 1. show_info.php
$num=mysql_num_rows($result); if($num $data = mysql_result($result,0,"file_data"); $type = mysql_result($result,0,"file_type"); $name = mysql_result($result,0,"file_name"); mysql_close($conn); //まず対応するファイルヘッダーを出力し、元のファイル名を復元します header("コンテンツタイプ:$type"); header("コンテンツの性質: 添付ファイル; ファイル名=$name"); $data をエコーします。 ?> 2.show_info.php
$sql = "id=$id の受信から file_name 、file_size を選択"; $result = mysql_query($sql,$conn); if(!$result) die(" エラー: mysql クエリ"); //指定されたレコードがない場合、エラーが報告されます $num=mysql_num_rows($result); if($num //プログラムの次の2文は次のように書くこともできます //$row=mysql_fetch_object($result); //$name=$row->名前; //$size=$row->サイズ; $name = mysql_result($result,0,"ファイル名"); $size = mysql_result($result,0,"file_size"); mysql_close($conn); echo " アップロードされたファイル情報:"; echo " ファイルの名前 - $name"; echo " ファイルのサイズ - $size"; 「 添付ファイル」をエコーします。 ?> 3.submit.php
$myfile=$_files["myfile"]; //タイムアウト制限時間を設定します。デフォルト時間は 30 秒です。0 に設定すると、時間制限はありません。 $time_limit=60; set_time_limit($time_limit); // //ファイルの内容を文字列に読み込みます $fp=fopen($myfile['tmp_name'], "rb"); if(!$fp) die("ファイルオープンエラー"); $file_data = addedlashes(fread($fp, filesize($myfile['tmp_name']))); fclose($fp); unlink($myfile['tmp_name']); //ファイル形式、名前、サイズ $file_type=$myfile["タイプ"]; $file_name=$myfile["名前"]; $file_size=$myfile["サイズ"]; die($file_type); //データベースに接続し、ファイルをデータベースに保存します $conn=mysql_connect("localhost","root","admin"); if(!$conn) die("エラー: mysql 接続に失敗しました"); mysql_select_db("nokiapaymentplat",$conn); $sql="受信に挿入 (ファイルデータ、ファイルタイプ、ファイル名、ファイルサイズ) 値 ('$file_data','$file_type','$file_name',$file_size)"; $result=mysql_query($sql,$conn); //次の文は、先ほど挿入したステートメントの ID を取り出します。 $id=mysql_insert_id(); mysql_close($conn); set_time_limit(30); // デフォルトのタイムアウト設定を復元します echo "アップロード成功--- "; echo "アップロードされたファイル情報を表示"; } それ以外 { echo "ファイルはアップロードされていません"; } ?> 4. アップロード.php |