ホームページ >バックエンド開発 >PHPチュートリアル >PHPファイルのアップロード
<?phpheader('Content-type:text/html;charset=utf-8');if(isset($_POST['submit'])){//检测表单'submit'是否有上传,如果有上传继续下一步,如果没那就没反应if(is_uploaded_file($_FILES['myfile']['tmp_name'])){//检测指定文件是否通过HTTP POST上传的,如果是继续下一步,如果不是提示'可能有攻击!'$arr=pathinfo($_FILES['myfile']['name']);//输出返回路径的信息(具体返回什么看手册)$newName=date('YmdGis').rand(1000,9999);//按年月日后面加1000到9999随机数字输出文件名if(move_uploaded_file($_FILES['myfile']['tmp_name'],"upload/{$newName}.{$arr['extension']}")){//move_uploaded_file把该文件的移动到另一文件里面(该函数参数是写被移动文件和移到到目标文件的路径)//($arr['extension']这个函数根据返回路径的信息确定文件后缀名)//如果上传后的文件移动到目标目录成功则输出'上传成功!',否则输出'移动文件失败!'//为什么要在上传文件的同时写上文件名和后缀名?因为相同的文件名和后缀名会覆盖掉,所以要写这么个判断。 echo '上传成功!'; }else{ echo '上传文件失败!'; } }else{ exit('可能有攻击!'); }}var_dump($_FILES);?><!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"/><title>上传页面</title></head><body><form action="" method="post" enctype="multipart/form-data"><!-- 注意点:属性method和enctype设置 --><input type="file" name="myfile" /><!-- 上传控件 --><input type="submit" name="submit" value="开始上传" /><!-- 提交按钮 --></form></body></html>
ステップ 1: フォームの「送信」がアップロードされているかどうかを確認します。アップロードされていない場合は、応答がありません。
ステップ 2: 指定されたファイルが HTTP POST 経由でアップロードされているかどうかを確認し、そうでない場合は、「攻撃がある可能性があります。」というメッセージが表示されます。 '。
ステップ 3: move_uploaded_file は、ファイルを別のファイルに移動します (関数パラメーターは、移動されたファイルを書き込み、ターゲット ファイルに移動するためのパスです)。
ステップ4: ファイルをアップロードするときにファイル名と拡張子を書き込みます。書かないと、同じファイル名と拡張子が上書きされるため、この判断を記述する必要があります。
ステップ 5: 判断する必要があるため、ファイル名と拡張子を判断するための式を書く必要があります。 (詳細については、上記のプログラムを参照してください)
ステップ 6: ファイルをアップロードしてプログラムをテストします。
1. アップロードする前に、アップロードに関連する php 構成オプション (php.ini) を設定する必要があります。可能な設定項目 可能な値の関数の説明
File_uploads は、サーバー上の PHP スクリプトが HTTP ファイルのアップロードを受け入れることができるかどうかを決定します。
memory_limit 8M 制御不能なスクリプトがサーバーのメモリを独占するのを防ぐために、スクリプトが割り当てることができるメモリの最大量を設定します。
upload_max_filesize 2M PHP によって処理されるアップロード ファイルの最大サイズを制限します。この値は post_max_size 値より小さくなければなりません。
post_max_size 8M POST メソッドを通じて受け入れられる情報の最大量を制限します。
upload_tmp_dirに保存されます。このディレクトリは、サーバー プロセスを所有するユーザーが書き込み可能である必要があります。
2. $_FILES 多次元配列:アップロードに関する各種情報(出力後に表示される情報)を格納するために使用(詳細はリファレンスマニュアルを参照)
is_uploaded_file() は、指定されたファイルが HTTP POST を通じてアップロードされたかどうかを判断します。
move_uploaded_file() ファイルがアップロードされた後、この関数を使用してファイルを移動できます。ファイルを新しい場所にアップロードしました。