4

複数のファイルを同時にアップロードできるウェブページを作ろうとしています。ファイル拡張子をJPG、JPEG、PNG、GIFなどの最も一般的な画像に制限します。

私はこれについていくつかの調査を行いました、そして私が見るところはどこでもそれがフラッシュこれとフラッシュそれです。

フラッシュはあまり使いたくない。特にFlash10では、マルチファイルのアップロードを有効にするために最も一般的に使用される方法が無効になります。

私が探しているのは、フォームの下部に1つの最終アップロードボタンがある、それぞれに参照ボタンがある入力フィールドをどんどん作成し続ける方法です。Javascriptを使用して新しい入力フィールドを作成することは、非常に重要です。

だから私はこれがどのように機能するのか疑問に思っています。これを解決するために1つのPHPコードを使用できるように、すべてのファイル入力フィールドに同じ名前を付ける必要がありますか?または、PHPがどのように多くのファイルがサビットされたかを検出し、ファイルを解析するためのコードをforループ内に配置する方法はありますか?

4

4 に答える 4

12

'file'入力を追加し続けることができますが、'upload[]'のような名前を使用してください

<input type="file" name="upload[]">

次に、$ _ FILES ['upload']に、次のようにループできるファイルの配列があります。

foreach ($_FILES['upload'] as $file) {
    echo $file['size'];
}
于 2008-11-09T20:16:29.440 に答える
2

アルゴリズムは次のとおりです。

新しいファイル入力フィールドをフォームに追加します。この各フィールドには一意の名前を付ける必要があります。次に、サーバー側で、$ _ FILES配列をループして、アップロードされたファイルの数を調べ、それらを処理します。

于 2008-11-09T20:14:06.293 に答える
0

JavaScript を使用して新しいアップロード フィールドを追加する場合、フォーム内のアップロード フィールドの数を使用して JavaScript で「非表示」の入力フィールドを更新することもできます。そうすれば、[送信] をクリックすると、その非表示の値が送信され、アップロードされたすべてのファイルの $_FILES 配列を解析するのは簡単になります。

于 2008-11-09T20:23:17.273 に答える
0

ファイル数に合理的な最大制限がある場合は、すべてを動的に作成するよりも、多くのファイル アップロード フィールドを静的フォームに含め、JavaScript を使用して余分なフィールドを非表示にする方がよいでしょう。これにより、JavaScript が使用できない場合でもフォームは機能します。

補足: 技術的には、単一の HTML ファイル アップロード フォームは、すでに複数のファイル アップロード フォームです。HTML フォーム エンコーディング標準によると、[参照] ダイアログ ボックスで複数のファイルを選択できる必要があり、それらはマルチパート/混合 MIME 構造として送信されます。

ただし、実際にこれをサポートするものはほとんどありません。古いバージョンの Opera はクライアント側 (そしておそらく Viola などの古いテスト ブラウザ) で機能し、サーバー側でいくつかのフォーム解析コンポーネントを実行しますが、PHP ビルトインは実行しません。いずれにせよ、UI はあまり使い物にならないので、見逃すことはあまりありません。

于 2008-11-10T00:01:38.393 に答える