2016-12-16 12 views
4

私はいくつかの他の通常の入力フィールドとともに、バックエンドに同時にいくつかのファイル(10個)を送信するフォームを持っています。検証エラー後にフォームファイルを保存

バックエンドで検証の問題が見つかった場合は、フォームを再度表示して通常の入力(ドロップダウン、テキスト入力など)を行いますが、ファイルフィールドを埋めることができません。ファイルディレクトリに戻ります。

私が考えている解決策は、ファイルのbase64でエンコードされた表現を送信し、検証エラーがある場合にフォームに戻すことですが、より単純な方法があるかどうかを知りたいと思います。

+0

多くの情報が必要です。この質問は現在の書式 – Liam

+0

で返ってくるものではありません。いくつかのコードや何かを表示しますか? – Liam

+0

答え:アップロードに関係なくアップロード....バッチ番号をファイルに添付...検証が失敗した場合、ファイルが既にアップロードされているため、ファイルを再選択する必要はありません。必要な部分のみ固定されることは検証である。不正なファイルにタイムアウトを付ける... x時間後にサーバから削除される検証を決して通過しなかった。ブラウザのセキュリティ上の理由から、あなたが望むものを達成することはできません。これは次善のものです。あなたが私の言いたいことに従うことを願って – Seabizkit

答えて

1

あなたが何をしても、サーバー側の検証はスキップできません。セキュリティ上の理由(例えば生の要求を送信している人)。限り、エラー(または単純な再読み込み)の場合は、私はBase64として、ファイルが大きい場合はAJAX経由で送信するファイルを表示する限り。

  1. クライアント側の検証:ほとんどの検証(すべてではないが)、プレーンJSを使用して行うことができます。ファイルタイプ、コンテンツタイプ、およびファイルタイプ(画像、ドキュメントなど)に応じたより具体的なバリデーション
  2. サーバ側の検証:送信後、ファイルとコンテンツを完全に検証します。
  3. ファイルを送り返す:エラーが発生した場合、小さい場合はリクエストを含むファイルを送信してください。大きい場合はAJAX経由で送信し、ブロックを避け、ページの読み込み時間を速くします。

希望します。

0

最も簡単な方法は、次のようになります。

1)クライアント側(ジャバスクリプト/ jqueryの上のすべてのフィールドを検証します)

2)一度、他の全ての入力が検証され、その後、あなたはファイルに送信します。

NB:あなたは、サーバー側でいくつかの値を検証する必要がある場合は、両方のステップのために使用アヤックス(1)及び(2)。また、質の高い回答を得るためにもう少し詳細を教えてください。

+0

2つの異なるHTTP呼び出しで検証と送信を実行すると、2番目のリクエストで送信されたパラメータが最初のリクエストで送信されたパラメータと異なる可能性があるため、検証は無効になります。 – Bustikiller

0

アップロードされたファイル用の一時ストアを作成し、ファイル全体ではなくストアから取得した一意の難しいIDだけを返信します。

単一ファイルアップロードのフォームセクションには、一意のファイルIDを持つ非表示の入力も含まれます。リクエストを処理するとき

:要求内のファイルがある場合は、ファイルを取得(およびフォーム有効でない場合は、それを保存する)ファイルIDがある場合はそれ以外のストアからファイルを取得します。

関連する問題