LoginSignup
0
0

More than 1 year has passed since last update.

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

Posted at

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の結果もしっかり出力されています。

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0