Skip to content

Instantly share code, notes, and snippets.

@20m61
Created November 3, 2022 02:50
Show Gist options
  • Save 20m61/e1a01090aa3974728cfa2012b8da4956 to your computer and use it in GitHub Desktop.
Save 20m61/e1a01090aa3974728cfa2012b8da4956 to your computer and use it in GitHub Desktop.
画像アップロードと一覧の表示
<?php
$dsn = "mysql:host=***; dbname=***; charset=utf8";
$username = "***";
$password = "***";
try {
$dbh = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
echo $e->getMessage();
}
if (isset($_POST['upload'])) {//送信ボタンが押された場合
$image = uniqid(mt_rand(), true);//ファイル名をユニーク化
$image .= '.' . substr(strrchr($_FILES['image']['name'], '.'), 1);//アップロードされたファイルの拡張子を取得
$file = "images/$image";
$sql = "INSERT INTO images(name) VALUES (:image)";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':image', $image, PDO::PARAM_STR);
if (!empty($_FILES['image']['name'])) {//ファイルが選択されていれば$imageにファイル名を代入
move_uploaded_file($_FILES['image']['tmp_name'], './images/' . $image);//imagesディレクトリにファイル保存
if (exif_imagetype($file)) {//画像ファイルかのチェック
$message = '画像をアップロードしました';
$stmt->execute();
} else {
$message = '画像ファイルではありません';
}
}
}
$id = rand(1, 5);
try {
$dbh = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
echo $e->getMessage();
}
$sql = "SELECT * FROM images WHERE id = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':id', $id);
$stmt->execute();
$image = $stmt->fetch();
?>
<h1>画像アップロード</h1>
<?php
$dir = "images/";
$filelist = glob($dir . '*');
foreach ($filelist as $file) {
if (is_file($file)) {
echo <<< eof
<li><img src="{$file}" width="300" height="300"></li>
eof;
}
}
?>
<!--送信ボタンが押された場合-->
<?php if (isset($_POST['upload'])): ?>
<p><?php echo $message; ?></p>
<?php else: ?>
<form method="post" enctype="multipart/form-data">
<p>アップロード画像</p>
<input type="file" name="image">
<button><input type="submit" name="upload" value="送信"></button>
</form>
<?php endif;?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment