[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ファイルをアップロード
必ず、post(getはダメ), multipart/form-data。
<form action="" method="post" enctype="multipart/form-data">
アップロードされたファイルは$_FILESに連想配列で渡される。
$_FILES['name']などとして、formのname属性に指定した値で取り出す。
仕組みは、
ファイル → (アップロード) → tmpディレクトリ → (move_uploaded_files) → 目的のディレクトリ
tmpディレクトリに一端、格納される。この時、tmp_name というファイル名で一時保管されている。
一時保管先は<?php print ini_get('upload_tmp_dir'); ?> で調べられる。
そして、このファイルを move_uploaded_files で目的のディレクトリへ動かす。
ブール値 = move_uploaded_files(コピー元 , コピー先);
p109
<form action="action.php" method="post" enctype="multipart/form-data">
<dl>
<dt>写真</dt>
<dd><input type="file" name="my_img" id="my_img" /></dd>
</dl>
<input type="submit" value="submit"/>
</form>
action.php
<?php
$file = $_FILES['my_img'];
print('ファイル名(name):' . $file['name'] . '<br>'); //自動的にこれらの連想配列で格納されている
print('ファイルタイプ(type):' . $file['type'] . '<br>');
print('アップロードしたファイル(tmp_name):' . $file['tmp_name'] . '<br>');
print('エラー内容(error):' . $file['error'] . '<br>');
print('サイズ(size):' . $file['size'] . '<br>');
//ファイルアップロードの処理をする
$ext = substr($file['name'],-3);
if($ext == 'gif' || $ext == 'jpg' || $ext == 'png'){
$filePath = './user_img/' . $file['name']; //ここでは、パスは、元々のファイル名で保存しようとしている。しかし、下の通りmove_uploaded_fileでは$file["tmp_name"]なので注意
move_uploaded_file($file['tmp_name'] , $filePath); //「tmp_name」とは一時的にアップロードされたファイル名の事。
print('<img src="' . $filePath . '"/>');
}else{
print('%拡張子が.gif,.jpg,.pngのいずれかのファイルをアップロードしてください');
}
?>