ファイルアップロード時の処理について調べていたのですが、分からない点があるので教えて欲しいです。
主にファイルの確認と移動についてなのですが、調べていました所、以下のように書かれた内容のサイトをみつけたのですが、理解できない部分があります...
html
1<form action="up.php" method="post" enctype="multipart/form-data"> 2 <input type="file" name="fname"> 3 <input type="submit" value="アップロード"> 4</form>
アップロード処理はphpスクリプトが呼び出された時点で終わっており、既にファイルとしてサーバ上に存在します。そのファイル名が一時ファイル名(tmp_name)です。これは適当な名前が付けられています。本来のファイル名は name キーでわかります。
アップロードされたファイルは一時的な場所にあるファイルなので、これを本来格納したい場所にファイルを移動する処理を行います。
php
1<?php 2$tempfile = $_FILES['fname']['tmp_name']; 3$filename = './' . $_FILES['fname']['name']; 4 5if (is_uploaded_file($tempfile)) { 6 if ( move_uploaded_file($tempfile , $filename )) { 7 echo $filename . "をアップロードしました。"; 8 } else { 9 echo "ファイルをアップロードできません。"; 10 } 11} else { 12 echo "ファイルが選択されていません。"; 13} 14?>
まずアップロードされたファイルが本当にアップロード処理されたかの確認を is_upload_file 関数で行います。これはセキュリティ対策です。
次に move_uploaded_file でファイルを移動します。この例では移動先はこのphpスクリプトと同じディレクトリに本来のファイル名で配置しています。しかし実際にはファイル用のディレクトリを作成して置いた方が良いでしょう。
ーーーーここまでが、そのサイトの内容となります。ーーーー
上記の内容なのですが、move_uploaded_file関数につきましては、第二引数に指定するのは、ファイルの移動先かと思います。
ですが、上記のコードでは、$filename = './' . $_FILES['fname']['name'] としています。
これだと、上記サイトの説明からしましても、ファイルの本来の名前を指定しているだけで、ファイルの移動先とは関係がないように思えます。
説明が大雑把で分かりにくい部分があるかもしれませんが、どなたか教えて下さる方いましたらご教授願えればと思います...
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/02 10:53
2017/08/02 11:03
2017/08/02 11:39
2017/08/02 11:52
2017/08/02 12:18
2017/08/02 12:33
2017/08/02 23:46
2017/08/03 01:22
2017/08/03 01:55
2017/08/03 02:05 編集
2017/08/03 02:24
2017/08/03 02:31
2017/08/03 02:40
2017/08/03 02:46
2017/08/03 03:10
2017/08/03 03:12