web-dev-qa-db-ja.com

PHPまたはJavaScriptを使用してフォームの送信に失敗した後、ファイル入力を再入力できますか?

さて、これがシナリオです:

ユーザーには、ファイル入力を含むフォームが表示されます。ユーザーがフォームを送信します。フォームは、何らかの理由で妥当性確認/検証に合格しません。エラーが強調表示されたフォームがユーザーに表示されます。ファイル入力が空白になりました。

質問:

ユーザーが最初に選択したファイルへのパスをファイル入力に再入力することは可能ですか? PHPソリューションが理想的ですが、JavaScriptソリューションも利用できます。

29
diggersworld

ここでの簡単な答えはノーだと思います。ファイルアップロードフィールドに再入力することはできません。ただし、回避することはできます。

ファイルが選択され、フォームが送信されている場合は、すでにファイルを受け取っています。あなたができることは、ディスク上のファイルへの参照を保持し、それを非表示フィールドに置き、ファイルがまだアップロードされていることをユーザーに示すメッセージを表示することです。そのため、ファイルを置き換えたり再アップロードしたりする必要はありません。フォームがファイルなしで再度送信された場合、非表示フィールドの値を確認し、それを使用して、最後の試行でアップロードしたファイルのローカルコピーを取得できます。

これを行うもう1つの方法は、ajaxを介してフォームを送信する(ファイルのアップロードにflashまたはiframeメソッドを使用)か、ajax呼び出しを実行して最初にフォームを検証し、有効な場合にのみ通常どおりに送信することです(したがって、フォームのリロード、ファイルアップロードフィールドデータの損失なし)。

38
darkliquid

フォームを送信する前に、ユーザーがアップロードファイルを最後のフィールドとして選択できるようにすることで、この問題を解決しました^^

1