PHPで画像をデータベースにアップロードする方法

PHPで画像をデータベースに格納するには、以下を行います。

  1. 画像ファイルをアップロードするためのファイルアップロードフィールドを作成する HTML ページを作ります。例えば、 を使用して、ファイルアップロードフィールドを作成できます。
  2. PHPスクリプトでは、$_FILES超グローバル変数でアップロードされたファイルが取得されます。$_FILES[‘image’][‘tmp_name’]でアップロードされたファイルの一時パスにアクセスできます。
  3. データベースへの接続を開き、画像ファイルをバイナリデータとして読み取ります。ファイル読み込みには file_get_contents() 関数、バイナリデータのエスケープには addslashes() 関数を利用します。
  4. バイナリデータをデータベースの画像フィールドに挿入します。SQLステートメントのINSERTコマンドを使用して、バイナリデータをデータベースに挿入できます。

以下に簡単な例を示します。

<?php
// 检查是否有上传文件
if(isset($_FILES['image'])){
// 获取上传文件的信息
$file_name = $_FILES['image']['name'];
$file_tmp = $_FILES['image']['tmp_name'];
// 打开数据库连接
$conn = mysqli_connect("localhost", "username", "password", "database_name");
// 读取文件为二进制数据
$image_data = addslashes(file_get_contents($file_tmp));
// 插入二进制数据到数据库
$sql = "INSERT INTO images (name, data) VALUES ('$file_name', '$image_data')";
mysqli_query($conn, $sql);
// 关闭数据库连接
mysqli_close($conn);
echo "图片上传成功!";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>图片上传</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="上传">
</form>
</body>
</html>

画像を二進数データとして格納するとデータベースが肥大化する可能性があるので、ファイルシステムに画像本体を格納し、そのパスをデータベースに保持する方法を推奨します。また、不正アップロードを防ぐために、アップロードされたファイルの検証とフィルタリングを行う必要があります。

bannerAds