php ファイルのアップロード 複数のファイルのアップロード

WBOY
リリース: 2016-08-08 09:20:07
オリジナル
862 人が閲覧しました

くだらない話をする前に、最初に断っておきますが、この記事は 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>
ログイン後にコピー
この関数を通じて、$_FILES は次の形式に変換されます:

この瞬間、2 つのアップロード これらのメソッドはすでに同じスタートラインにあります。次のタスクは、各ファイルをアップロードするための UploadFile() 関数を作成することです。これがこの記事の焦点でもあります。

ファイルアップロード機能:

<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 チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート