PHPのformのsubmitでファイルをアップロードするサンプルです。
| 確認環境 ・PHP 7.1.8 ・XAMPP 7.1.8 ・Windows 10 |
PHPのファイル
以下2つのファイルがあります。
1.index.php・・・画面でファイルを選択してアップロードします。
2.test1.php・・・ファイルを受け取ります。
ファイルをアップロードする画面 (index.php)
ファイルをアップロードする画面のコードです。
8行目は、form要素にenctype="multipart/form-data"を指定しています。ファイルをアップロードするときに必要です。
9行目は、input要素のfile属性です。ボタンを押すとファイルを参照するダイアログを表示します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ファイルをアップロードするサンプル</title>
</head>
<body >
<form enctype="multipart/form-data" method="post" action="test1.php" >
<input type="file" name="file1"><br>
<input type="submit" value="アップロードする">
</form>
</body>
</html>
ファイルを受け取る画面 (test1.php)
| ファイルを受け取る画面のコードです。 サンプルとしてindex.phpの画面でtest1.txtという170バイトのファイルをアップロードしました。 |
| 2-25行目は、確認のためのコードです。スーパーグローバル変数の$_FILESでアップロードしたファイルの情報を表示しています。 $_FILES['file1']のfile1は、index.phpの9行目にあるname属性の値です。 |
| 28行目は、ファイルがアップロードされたか確認しています。index.phpの画面でファイルを選択せずにアップロードのボタンを押した場合は、if文でfalseになり38行目の「ファイルがありません」が表示されます。 |
| 30行目は、一時的なファイルをアップロード先に移動しています。 →一時的なファイルを、test1.phpがあるフォルダの配下の「hozon1」フォルダにtest2.txtという名前で移動しています。 サンプルでは、D:\xampp\htdocs\testPHPにtest1.phpがあり、 D:\xampp\htdocs\testPHP\hozon1にtest2.txtがアップロードされました。 hozon1フォルダがない場合は、if文でfalseになり34行目の「アップロード失敗」が表示されます。 |
<?php
//アップロードしたファイル名
$a = $_FILES['file1']['name'];
echo $a; //test1.txt
echo nl2br("\n"); //改行
//一時的なファイル名
$b = $_FILES['file1']['tmp_name'];
echo $b; //D:\xampp\tmp\phpF5E8.tmp
echo nl2br("\n"); //改行
//ファイルのサイズ
$c = $_FILES['file1']['size'];
echo $c; //170
echo nl2br("\n"); //改行
//ファイルのタイプ
$d = $_FILES['file1']['type'];
echo $d; //text/plain
echo nl2br("\n"); //改行
//エラーコード
$e = $_FILES['file1']['error'];
echo $e; //0
echo nl2br("\n"); //改行
if (is_uploaded_file($b)) {
if ( move_uploaded_file($b , './hozon1/test2.txt' )) {
echo "アップロード成功";
} else {
echo "アップロード失敗";
}
} else {
echo "ファイルがありません";
}
?>
リンク
以下は、PHPマニュアルのPOSTメソッドによるアップロードのリンクです。
http://php.net/manual/ja/features.file-upload.post-method.php
関連の記事
PHP フォルダ内のファイルの一覧を取得するサンプル(glob)
PHP CSVを読み込むサンプル (SplFileObject )
PHP 外部のphpファイルを読んで評価するサンプル(include/require)
PHP ファイルに書き込むサンプル (fwrite/file_put_contents)