PHPとHTMLでファイルアップロード

TOP > PHP >  PHPとHTMLでファイルアップロード

ファイルアップロード


ファイルアップロードの仕組みは①ファイル送信側のHTMLと②ファイル受信側のPHPやCGI がセットになり動作します。

fileupload.html (ファイル送信側)

注) formの属性に enctype="multipart/form-data" を付けなければアップロードはできません。
<html>
<head>
<title>ファイルアップロード</title>
</head>
<body>


<form method="post" action="./fileupload.php" enctype="multipart/form-data">
<input type="file" name="filename" size="60" />
<input type="submit" name="submit" value="送信" />
</form>

</body>
</html>

fileupload.php (ファイル受信側)

HTML側の input type="file" の name値 を "filename" としている場合は PHP側の $_FILES のキー値も "filename" に合わせて下さい。
<?php

// アップロードが正常に行われたかチェック
if ( $_FILES['filename']['error'] == UPLOAD_ERR_OK )
{
	// アップロード先とファイル名を付与
	$upload_file = "./upload/" . $_FILES["filename"]["name"] ;
	
	// アップロードしたファイルを指定のパスへ移動
	if ( move_uploaded_file( $_FILES["filename"]['tmp_name'], $upload_file ) )
	{
		// パーミッションを変更
		// Read and write for owner, read for everybody
		chmod($upload_file, 0644);
	} 
} 
?>

print_r($_FILES['filename']) をすると以下のように出力されます。

Array ( [name] => 017.jpg [type] => image/jpeg [tmp_name] => /tmp/phpmN80Wf [error] => 0 [size] => 40975 )
$_FILE配列の内容説明
$_FILE[ パラメータ名 ][ name ]アップロードファイル名
$_FILE[ パラメータ名 ][ type ]MIMEタイプ
$_FILE[ パラメータ名 ][ size ]ファイルサイズ
$_FILE[ パラメータ名 ][ tmp_name ]テンポラリファイル名。アップロードされたファイルが一時的に保存されるファイルへのパス
$_FILE[ パラメータ名 ][ error ]エラーコード。正常にアップロードされた場合は0(定数ではUPLOAD_ERR_OK)

PHPサンプルソース集