くだらない話をする前に、最初に断っておきますが、この記事は PHP の単一ファイルのアップロードをマスターすることをベースにしているため、ファイルアップロードサーバーの構成やフォームの設定についてはここでは詳しく説明しません。
あまり言うことはありませんが、早速本題に入りましょう。リクエストページを書くには 2 つの方法があります (3 つのファイルをアップロードする場合を例として、フォーム部分のみを示します)。 2 つ目は、唯一の違いは name であることがわかります。1 つ目は名前を配列の形式に設定する方法であり、2 つ目は通常設定する簡単に思いつくメソッドです。
表面的にはほんの少しの違いしかありませんが、実際に doAction.php ページに送信される $_FILES は大きく異なります。
次のように、$_FILES の最初のタイプは 3 次元配列ですが、2 番目のタイプは 2 次元配列です:
明らかに $ の 2 番目の形式を扱う方が便利です。 _ファイル。もちろん、次のように、最初の形式の $_FILES を 2 番目の形式に変換する方法も見つけることができます:
<span><</span><span>form </span><span>action</span><span>="doAction.php"</span><span> method</span><span>="post"</span><span> enctype</span><span>="multipart/form-data"</span><span>></span><span> 请选择我的上传文件 </span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfile[]"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfile[]"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfile[]"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="submit"</span><span> value</span><span>="上传"</span><span>/></span><span></</span><span>form</span><span>></span>
<span><</span><span>form </span><span>action</span><span>="doAction.php"</span><span> method</span><span>="post"</span><span> enctype</span><span>="multipart/form-data"</span><span>></span><span> 请选择我的上传文件 </span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfil1"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfil2"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="file"</span><span> name</span><span>="myfil3"</span><span>/></span><span><</span><span>input </span><span>type</span><span>="submit"</span><span> value</span><span>="上传"</span><span>/></span><span></</span><span>form</span><span>></span>
これには2つの小さな機能も含まれています:
<span>function</span><span> getFiles(){ </span><span>foreach</span>(<span>$_FILES</span><span>as</span><span>$file</span><span>){ </span><span>$fileNum</span>=<span>count</span>(<span>$file</span>['name'<span>]); </span><span>if</span> (<span>$fileNum</span>==1<span>) { </span><span>$files</span>=<span>$file</span><span>; }</span><span>else</span><span>{ </span><span>for</span> (<span>$i</span>=0; <span>$i</span> < <span>$fileNum</span>; <span>$i</span>++<span>) { </span><span>$files</span>[<span>$i</span>]['name']=<span>$file</span>['name'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['type']=<span>$file</span>['type'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['tmp_name']=<span>$file</span>['tmp_name'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['error']=<span>$file</span>['error'][<span>$i</span><span>]; </span><span>$files</span>[<span>$i</span>]['size']=<span>$file</span>['size'][<span>$i</span><span>]; } } } </span><span>return</span><span>$files</span><span>; }</span>
感想:
PHPファイルのアップロードに出会ったのはかなり前ですが、当時はめちゃくちゃな感じでした。 $_FILES に含まれる情報を理解し、書いた知識を使用していくつかのヒントに対処する限り、システムはそれを論理的に検討し、適切なタイミングで関数をカプセル化して、ファイルのアップロードを実行できるようです。早く出て。今回紹介するコードは決してニーズを満たすものではないので、適宜修正して独自のコードにしてください。例えばアップロードされたファイルが画像の場合、拡張子だけでは判断できず、画像の特徴を利用した検証も必要となります。
上記では、PHP ファイルのアップロードと複数ファイルのアップロードについて内容の側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。