画像ファイルがディレクトリに保存されない```ここに言語を入力
formから画像を送信し、画像をディレクトリへ保存、画像パスをDBに保存を行いたいのですが,画像がディレクトリに保存されません。どうしても原因がわかりませんご教示してしただけると嬉しいです。
画像のアップロードにつきましては、
- formにmultipart/form-dateと記述し,input typeをfileにして送信。
- 画像ファイルなのかを確認するバリデーションチェックを行う
- エラーがなければmove_uploaded_fileでテンポラリファイルから保存したいディレクトリに移動する->保存完了
このように認知しております。
現在
forom送信(ディレクトリ保存)->確認(保存された画像内容確認)->完了(DB保存)
のように考えております。
しかし、確認で画像を表示すると?と出てしまいます。vardumpで確認すると画像ファイルパスは取得できているのですが、ディレクトリを調べると画像が保存されていませんでした。なぜ保存できないのか原因が知りたいです。
<?php session_start(); if (!empty($_POST)) { ^ $errors = []; ^ if (!empty($_FILES['image']['name'])) { ^ ^ $type = exif_imagetype($_FILES['image']['tmp_name']); ^ ^ if (!isset($_FILES['image']['error']) || !is_int($_FILES['image']['error'])) { ^ ^ ^ $errors['image'] = 'アップロードできません'; ^ ^ } elseif ($_FILES['image']['errors'] > 0) { ^ ^ ^ $errors['image'] = 'アップロードできませんでした。'; ^ ^ } elseif (!in_array($type, [IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF], true)) { ^ ^ ^ $errors['image'] = '画像ファイルではありません'; ^ ^ } else { ^ ^ ^ $image = sha1_file($_FILES['image']['tmp_name']); ^ ^ ^ $image .= '.' . substr($_FILES['image']['name'], -3); ^ ^ ^ move_uploaded_file($_FILES['image']['tmp_name'], './pictures/' . $image); ^ ^ } ^ } ^ if (empty($errors)) { ^ ^ $_SESSION['image'] = $image; ^ ^ header('Location: check.php'); ^ ^ exit(); ^ } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title></title> </head> <body> <form action='' method='POST' enctype='multipart/form-data'> プロフィール画像<input type='file' name='image'> <?php if (!empty($errors['image'])): ?> <p><?php echo $errors['image']; ?></p> <?php endif; ?> <input type='submit' value='送信'> </form> </body> </html>
回答1件
あなたの回答
tips
プレビュー