ホームページ >バックエンド開発 >PHPチュートリアル >php ファイルをアップロード php ファイルをデータベースにアップロード

php ファイルをアップロード php ファイルをデータベースにアップロード

WBOY
WBOYオリジナル
2016-07-25 08:51:372097ブラウズ
PHP はどのようにしてデータベースにファイルをアップロードしますか? ここでは、PHP でファイルを MySQL データベースに保存する方法と、PHP でファイルをアップロードしてデータベースに保存する方法をマスターします。

phpがデータベースにファイルをアップロード このファイルを保存するには、データベースにlongblobフィールドを作成するだけです。 ただし、4~5mのファイルをアップロードする場合、この時点で注意が必要な問題がいくつかあります

1、php.iniを変更します

post_max_size アップロード_最大ファイルサイズ

2つのパラメータの値は、アップロードする必要があるファイルのサイズより大きくしてください

2、my.cnfを変更します mysqlデータベースのmax_allowed_pa​​cketパラメータの値を変更します。 このパラメータの意味は次のとおりです。 max_allowed_pa​​cket バッグの最大サイズ。メッセージ バッファは net_buffer_length バイトに初期化されますが、必要に応じて max_allowed_pa​​cket バイトまで増やすことができます。デフォルトでは、この値は小さすぎるため、大きな (エラーの可能性がある) パケットをキャプチャできません。大きな 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

ファイルアップロードフォーム
アップロードファイルを選択


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。