読者です 読者をやめる 読者になる 読者になる

FORMで送信した画像を移動して保存する

PHP

最終的には一覧表示をさせるところまでやります。
今日は画像を指定したファイルに保存するところまで
(手動でよくない?ってのは無しで)


ソース(index.php)

<?php
//画像の移動
if(isset($_FILES['image']) && is_uploaded_file($_FILES['image']['tmp_name'])){
	$old_name = $_FILES['image']['tmp_name'];
	$new_name = $_FILES['image']['name'];
	if(move_uploaded_file($old_name,'img/' . $new_name)){
		echo "アップロードしました。";
	} else {
		echo "出来ませんでした。";
	}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>無題ドキュメント</title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image"><br>
<input type="submit" value="送信">
</form>
</body>
</html>

少し解説

isset($_FILES['image'])

issetは変数($_FILES['image'])が入っているかどうかをチェックします。
imageはinput type="file"のnameです。

is_uploaded_file($_FILES['image']['tmp_name'])

$_FILES['image']['tmp_name']がHTTP POST でアップロードされたファイルかどうかを調べます。
tmp_nameはアップロードされたファイルが一時的に保存されるファイルパスです。
送信ボタンを押したら保存されますが、結果が表示されるころには消えています。

$old_name = $_FILES['image']['tmp_name'];
$new_name = $_FILES['image']['name'];

一時的に保存されたファイルパスを$old_nameとし、
アップロードしたファイル名を$new_nameとします。

if(move_uploaded_file($old_name,'img/' . $new_name))

move_uploaded_file(A,B)はAをBへ移動するという意味です。
今回は$old_nameをimg/の中へ移動させます。