3

初投稿なのでお手柔らかに!これを検索してみましたが、同様の投稿がたくさんありますが、私の問題とまったく同じものが見つからないようで、何時間もこれに取り組んでいます! :-/

私は PHP (5.3) と MySQL でシステムを構築しています。機能の一部は、ユーザーが以前の選択に基づいていくつかのファイルをアップロードする必要があることです。フォームの例は次のとおりです。

<form action="" method="post" enctype="multipart/form-data" id="uploadFiles">
<p>
<label for="file1">Upload file 1:</label>
<input type="file" name="file1" id="image">
</p>
<p>
<label for="file2">Upload file 2:</label>
<input type="file" name="file2" id="image2">
</p>
<p>
<input type="submit" name="upload" id="upload" value="Upload">
</p>
</form>

この場合、ユーザーは 2 つの異なるドキュメントをアップロードする必要があります。これはすべて私にとってはうまくいき、2つのファイルをサーバーに保存してから、「$ _FILES」をループすることで、ファイル名、ファイルタイプ(pdf、jpg)、ユーザーIDなどを使用してデータベースのテーブルに2つのレコードを挿入できます私のアップロードクラス。

しかし、私がやろうとしている<input name="foo">のは、挿入された行に name 属性を何らかの方法で追加して、「ファイル 1」が document_type という列に「file1」を持ち、「ファイル 2」が「file2」を持つようにすることです。そうすれば、MySQL で基本的なチェックを実行して、ユーザーが適切なファイルをアップロードしたかどうかを確認できます。

追いかけるには、アップロードクラスの $_FILES の各ファイルに INPUT "name" 属性を割り当てるか関連付けて、$_FILES をループするときに一意の document_type が存在するようにする方法はありますか?

私のセットアップに関する詳細情報が必要な場合はお知らせください。

4

4 に答える 4

1
foreach ($_FILES as $inputName => $uploadedFile) {
    echo $inputName, ':', PHP_EOL;
    print_r($uploadedFile);
}

出力

file1:
Array (
    'name' => ...
    'tmp_name' => ...
    ...
)
file2:
Array (
    'name' => ...
    'tmp_name' => ...
    ...
)
于 2012-11-07T13:00:31.477 に答える
0

入力に異なる名前を付けずに、同じ名前を配列として記述するのが最も簡単です(例:name = "file []")。

于 2012-11-07T13:34:24.687 に答える
0

ファイル INPUT の名前は、$_FILES配列内の行のキーである必要があります。たとえば、あなたの例では、 $_FILES 配列には次のように参照できる 2 つの行が必要$_FILES['file1']です$_FILES['file2']。したがって、配列をループしているときは、そのキー値を検索して行に挿入するだけです。

于 2012-11-07T13:09:07.927 に答える
0

質問には答えられたと思いますが、今後の提案として、CI でパラメーターを渡すことについてさらに情報が必要な場合は、Xdebug を使用できます (私は Netbeans と連携して使用します)。私はそれを1週間使用しただけで、とても素晴らしいツールです!

于 2014-09-02T15:39:26.977 に答える