2017-05-04 11 views
0

ファイル入力のみのフォームがあります。このファイル入力はCSVファイルを添付するためのもので、送信するとすべてのヘッダーのリストが表示されますから選ぶ。選択を完了したら、これらの選択肢を含む別のフォームをCSVファイルと共に提出して処理したいと思います。初期フォームを送信した後にCSVファイルを再添付します

私の問題は、CSVファイルを2番目のフォームに再接続する方法がわかりません。

私はちょうどデータをPOSTするために配列を使用することを考えましたが、CSVファイルを再接続して正しく処理する方が良いとは思いませんか?

これは私が持っているものですが、これを調べようとしましたが何も見つかりませんでした。

<input type="file" name="fileToUpload" value="<?=$_FILES['fileToUpload']['tmp_name'];?>"> 

これは、最初の添付ファイルの後の2番目の形式です。 CSVファイルをフォームに添付して処理するにはどうすればよいですか?

+0

これはおそらく、ajax呼び出しでこれを取り除くことができ、2番目のフォームは必要ありません。別のPHPファイルを呼び出して処理します –

+0

どうすればそのファイルにデータを渡すことができますか?配列としてPOSTするだけですか? – GrumpyCrouton

+0

あなたはそれを配列として投稿するか、javascriptフォームデータオブジェクトを使ってajax経由でファイルを送信することができますhttp://stackoverflow.com/questions/21044798/how-to-use-formdata-for-ajax-file-upload – M31

答えて

1

あなたが記述していることは不可能です - ファイルを "ファイル"入力に書き込むことはできません - それはユーザのディスクからの位置を表しており(サーバ側ではあなたには知られていません)ポストバック時の実際のファイル内容

代わりに、最初のフォームの送信後に、ファイルをサーバーのディスク上に一時的な場所に保存し、セッション(またはDB、またはその他の永続的な記憶域)に格納し、2回目のポストバック場所を取得してファイルの使用を続行します。そうすれば、再度リクエストする必要はありません。

一時ファイルを削除することができます。一時的なファイルを削除することができます。要求の有効期間内に実行できない場合は、すべての「処理済み」ファイルの一時ファイルフォルダを消去するセカンダリジョブを作成しますユーザが第2のフォームを提出したことがなく、そのセッションが終了したファイル)を定期的に送信する。

+0

これは唯一の実現可能な方法です私が見る限り。また、あなたの提案が実際に実行可能であったとしましょう。これは、アップロードされたファイルを一度アップロードするので、帯域幅を節約できます。 – ADyson

+0

私が扱っているファイルのサイズは、ほとんどの場合かなり小さいですが、あなたは正しいです – GrumpyCrouton

関連する問題