ファイルをアップロードする
ブラウザを使用してファイルをアップロードするサンプルです。CMSなどのシステム等で使用すると思います。サンプルではGIF/PNG/JPEGの画像ファイルの認識や各種エラーにも対応しています。言語はPHPとなります。
まずは結果から
[初期画面]
[アップロード後の画面]
ファイルを選択して「アップロードを実行する」ボタンを押すとサーバーへ画像ファイルがアップロードされます。アップロードされた画像ファイルはブラウザで表示されるようにしています。
ソースコード[upload.php]
早速、ソースコードを貼り付けます。
<?php
$errmsg = ""; // エラーメッセージ
define("FOLDER_UPLOAD" ,"./hoge/") ; // 保存先のフォルダ名(任意のフォルダ名にする)
if (isset($_FILES["upfile"])){
// エラーの確認
switch ($_FILES["upfile"]["error"]) {
case UPLOAD_ERR_OK: // OK
break;
case UPLOAD_ERR_NO_FILE:
$errmsg = '<span style="font-weight:bold;color:red;">ファイルが選択されていません。</span><br />';
break;
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
$errmsg .= '<span style="font-weight:bold;color:red;">「'. $_FILES["upfile"]["name"] . '」のファイルサイズが最大値を超えています。</span><br />';
break;
default:
$errmsg .= '<span style="font-weight:bold;color:red;">「'. $_FILES["upfile"]["name"] . '」:エラーが発生しました。</span><br />';
break;
}
if ($_FILES["upfile"]["error"] === UPLOAD_ERR_OK){
// 同名ファイルの確認
if (file_exists(FOLDER_UPLOAD .$_FILES["upfile"]["name"])){
$errmsg .= '<span style="font-weight:bold;color:red;">「' .$_FILES["upfile"]["name"] . '」は既に存在します。</span><br />';
}
// ファイルタイプの確認
if (!( ($_FILES["upfile"]["type"] === 'image/gif') ||
($_FILES["upfile"]["type"] === 'image/jpeg') ||
($_FILES["upfile"]["type"] === 'image/png'))){
$errmsg .= '<span style="font-weight:bold;color:red;">「' .$_FILES["upfile"]["name"] . '」は対応していない形式です。</span><br />';
}
}
// テンポラリからファイルの移動
if ($errmsg == ""){
$filename = FOLDER_UPLOAD . $_FILES["upfile"]["name"];
if (move_uploaded_file($_FILES['upfile']['tmp_name'],$filename)){
// パーミッションの変更
chmod($filename,0644);
}else{
$errmsg .= '<span style="font-weight:bold;color:red;">ファイルのアップロードに失敗しました。</span><br />';
}
}
// メッセージの表示
if ($errmsg == ""){
$errmsg .= '<span style="font-weight:bold;">・「' . $_FILES["upfile"]["name"] . '」をアップロードしました。</span><br />';
$errmsg .= '<img src="'. htmlspecialchars(FOLDER_UPLOAD . $_FILES["upfile"]["name"]) .'" /><br />';
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div><?php echo $errmsg; ?></div>
<br />
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfile" size="30" /><br />
<br />
<input type="submit" value="アップロードを実行する" />
</form>
</body>
</html>
サンプルの解説
HTMLではformタグにenctype="multipart/form-data"を追加する事でファイルがアップロードできるようになります。
PHPでは$_FILESでアップロードされたデータを扱うことができます。各種エラー処理を実施してから、move_uploaded_fileでサーバーのテンポラリから任意のフォルダへファイルをコピーします。
非常にざっくりな説明ですが後はソース内のコメントから読み取ってくださいね :-)
その他のサンプル
複数ファイルのアップロードとドラッグ&ドロップに対応したい場合は
をご覧下さい。
スポンサーリンク
関連記事
公開日:2015年01月28日
記事NO:00162
プチモンテ ※この記事を書いた人
![]() | |
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
| 🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は抒情詩、抒情的な楽曲が多い。楽曲制作は🔰2023年12月中旬 ~ | |









