search
LoginSignup
0

posted at

【PHP】ファイルのアップロード方法

PHPを学習中です。
ファイルのアップロード方法について、備忘録として残します。

1. 【HTML側での処理】データ送信フォームを作成する

form.php
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>HTML内でのPHP処理</title>
</head>
<body>
<form enctype="multipart/form-data"  action="upload.php" method="POST">
<input type="hidden" name="name" value="value" />
アップロード: <input name="user_file_name" type="file" />
<input type="submit" value="ファイル送信" />
</form>
</body>
</html>

上記コードを記述すると、このように表示されます。

スクリーンショット 2022-05-27 16.04.43.png

ポイント

・enctype=”multipart/form-data”によりデータのエンコード(暗号化)を行います。
(参考)multipart/form-dataとは
・actionでPHPのURLを指定することで、指定したURLに対してformの送信を行います。
・type=”hidden”と書くことで、送信の際に入力内容を表示させないようにします。
・name=”name”で指定したname属性を持つ、value=”value”の値を送信します。
・input name=”userfile”で、アップロードしたいファイルをname属性で指定しています。
・type=”file”で、ファイルをアップロードすることを指定しています。

2. 【PHP側での処理】アップロードされたファイルを本来格納したい場所へ移動させる

upload.php
<?php
$temporary_file = $_FILES['user_file_name']['tmp_name']; # 一時ファイル名
$true_file = $_FILES['user_file_name']['name']; # 本来のファイル名

# is_uploaded_fileメソッドで、一時的にアップロードされたファイルが本当にアップロード処理されたかの確認
if (is_uploaded_file($temporary_file)) {
    if (move_uploaded_file($temporary_file , $true_file )) {
        echo $true_file . "をアップロードしました。";
    } else {
        echo "ファイルをアップロードできません。";
    }
} else {
    echo "ファイルが選択されていません。";
}
var_dump($true_file);
?>

ポイント

・アップロード自体は、PHPスクリプトが呼び出された時点で終わっており、既にファイルとしてサーバ上に存在しています。
・ただし、存在すると言っても、サーバ上の一時的な場所に保管されているだけなので、このファイルを本来格納したい変数に移動させる必要があります。
・PHPでは$_FILES[]にアップロードされたファイルに関する各種データが入る仕組みになっています。
・ファイル名は、inputタグの方で付けたuser_file_nameなので、$_FILES[user_file_name]となります。
・$_FILESは連想配列です。
・一時的にサーバ上に保管されているファイル名は「tmp_name」とルールで決められています(tmpはtemporaryの略です)。
・同じく本来のファイル名は「name」とルールで決められています。
・「tmp_name」の中身を「name」に移動させることで、ファイルの移動ができます。

3. 実際にファイルをアップロードしてみる

スクリーンショット 2022-05-27 17.19.25.png

ファイルをアップロードさせることができました。
またvar_dumpの結果もしっかり出力されています。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0