2009-04-11 13 views
0

私はVB.netでASP.net(2.0)を使用しています。ページがリロードされるとファイルアップロードリンクがクリアされます。なぜですか?

私はユーザー登録フォームを持っています。 そのフォームでユーザーは彼の連絡先の詳細をすべて提供し、彼はASP.netの通常のファイルアップロードコントロールで画像をアップロードできます。

これは私の問題です。
ページに何か問題が発生した場合は、ユーザーが何を書き留めていないのか、何が間違っていたのかを示すエラーメッセージが表示されます。しかし、それが起こったときにページが更新されます。今度は、ユーザーが選択した画像へのリンクがなくなりました。ユーザーが自分のエラーを修正したときに、画像をアップロードしていると思うが、ページが読み込まれたときにファイルアップロードコントロール内の画像へのリンクが削除されたため、

ユーザーはイメージをアップロードする必要はないので、フィールドが空白の場合はエラーは発生しません。

誰かが私が何をしなければならないか考えていますか?

答えて

3

これは仕様です。これは、ブラウザーによって課せられたセキュリティ上の制限です。そのため、明示的な操作でのみすべてのファイルがユーザーのコンピューターからアップロードされます。

フォームの送信中に何か問題が発生した場合は、ユーザーに自分のファイルを再アップロードする必要があります。それが正しい方法です。それをトランザクションとみなしてください(すべてかどうか)。

1

セキュリティ上の理由から、誰もHTMLのファイルフィールドに値を書き込むことはできません。ファイルをアップロードしてエラーを報告し、アップロードを取り消す方法をユーザに与えることができます。編集:これは、bobinceが別の答えでより詳細にdescibesするものです。

3

できないと思います。過去数年間のブラウザは、ドライブのアップロードを防ぐためにファイルフォームフィールドにロックされていました。写真をアップロードするための別のプロセスがあります。

4

誰かが私が何をしなければならないか考えていますか?

二つの通常のアプローチ:

  1. 大多数の人々のために、エラーが彼らではなく、フォームを送信した前にポップアップ表示されるように、クライアント側(JavaScriptの)フォーム検証を追加します。後で、サーバー側では、アップロードが失われています。

  2. 各フォームインスタンスに一意のIDを付けます。ファイルがエラーのあるフォームにアップロードされると、そのファイルをサーバーに格納し、そのIDを持つフォームに添付ファイルがあることをデータベースに記録します。二度目のフォームでは、IDを隠しフィールドとして含め、アップロードされたファイルが記憶されていることを視覚的に示します。投稿時に、思い出したファイルをドラッグして、新しい投稿と添付します。

関連する問題