0

runat=server と送信ボタンを備えた 5 つの HTML ファイル入力コントロールを備えた asp.net フォームがあります。ユーザーがファイルを選択して送信ボタンをクリックすると、ファイルがサーバーにアップロードされます。

問題は、HTML ファイルの入力コントロールが編集可能であり、ユーザーが参照ボタンからファイルを選択した後でパスを編集できることです。

無効なファイル パスを入力すると、ファイルは存在しないためアップロードされません。

ユーザーがファイル パスを手動で変更できないようにするにはどうすればよいですか? コントロールを読み取り専用にしようとしましたが、参照ボタンも無効になります。

4

5 に答える 5

6

できません。サーバー側のロジックを記述して、アップロードの欠落に対処します。

于 2012-04-09T12:35:52.280 に答える
0

非表示フィールドを設定するなどの方法を試すことができます。ユーザーが参照からファイルを選択すると、非表示フィールドにもデータが入力されます。次に、アップロード時に、アップロードの非表示フィールドから読み取るか、JSを使用して値を元のコントロールに戻し、そこから読み取ります。

于 2012-04-09T12:42:36.533 に答える
0

これはあなたが欲しいものですか...

ユーザーがファイルを選択したときにコントロールを非表示にし、同意しない場合はユーザーへのパスのみをdivに表示し、パスdivの横にあるChoose Anotherというリンクをクリックさせて、ユーザーが[Chooseanothertoggle]をクリックするようにします。前の値をフラッシュするのと同じdiv

このフィドルを参照してください:http: //jsfiddle.net/T2D3X/

于 2012-04-09T13:57:04.237 に答える
0

ブライアンの提案は機能しますが (ブライアンに感謝します)、最終的にはサーバー側の処理方法に従うことにしました。無効なファイルの場合、ファイルサイズはゼロになるため、応答は即座に行われ、ファイルがアップロードされるまで待つ必要はありません。この場合、そもそもファイルがないためです。

//check if file exists

                if (uploadCtrl.PostedFile.ContentLength > 0)
                {
                    uploadCtrl.PostedFile.SaveAs(fileNameWithPath);
                    uploadCtrl.Dispose();
                }
                else
                {
                    fileNameWithPath = "invalid";
                } 
于 2012-04-10T04:45:26.917 に答える
0

次の方法も使用できます。

検証前の 1 つ: http://jsfiddle.net/T2D3X/1/

検証後: http://jsfiddle.net/T2D3X/2/

私の友人は、私が再修正する前に同じ回答を投稿しました。

無視できる2番目のリンクにいくつかの内部jsfiddleエラーがあります。送信する値を正確に確認するために機能を追加しました。

お役に立ちましたらお知らせください ;) ありがとうございます。

于 2012-04-10T05:03:43.863 に答える