-1

基本的なファイル情報を抽出している.aspxページにファイルアップロードコントロールがあります。要件は、選択したファイルの絶対パスをクライアントのマシンからデータベースに保存する必要があることです。

私はこのサイトだけでなく、セキュリティ上の理由からASP.NETがクライアントのマシンから情報を読み取ることを本質的に許可していない他のサイトでも読んだことがあります。

しかし、jsなどを使用して絶対パスを取得し、それをasp.net変数に渡す方法があるかどうか疑問に思っていますか?

4

4 に答える 4

3

この制限については、合理的なことは何もできません。

ユーザーのマシン上の完全に信頼されたコードであれば、それを行うことができます。したがって、あなたの目標は、ユーザーに情報を提供するものをインストールするよう説得することです。

Windows の場合 (すべて何らかのインストールが必要です):

  • ActiveX コントロール
  • ネイティブEXE
  • ローカルにインストールされたマネージ EXE
  • ローカルにインストールされた IE 専用の HTA

私は、ほとんどすべてのプラットフォームにもそうする方法があると信じています... 同様に面倒なインストール要件があります。

于 2013-01-04T08:36:16.650 に答える
2

クライアント マシンのパスを取得できません。セキュリティ上の理由から、ブラウザはファイルの完全なパスを投稿しません。

于 2013-01-04T08:40:17.250 に答える
1

ファイルのフルパスを取得できません。セキュリティ上の理由から、ブラウザはファイルの完全なパスを投稿しません。

以下のコードを Java スクリプトで使用してみてください。

lbltext.Text = FileUpload1.PostedFile.FileName 
于 2013-01-04T09:16:52.193 に答える
0

ブラウザは完全なファイル パスなしでファイルを送信するため、ファイル パスを取得するには、javascript 関数を介してクライアント側で行います。

<script type="text/javascript">
function OnSubmitHandler(myForm)
{
   var fileUpload = document.getElementById('<% = FileUpload1.ClientID %>');


   myForm.action =  myForm.action + "?FilePath=" + fileUpload.value;


   return true;


}
</script>


<form id="Form1" method="post" runat="server" onsubmit="return OnSubmitHandler(this);">
...
<asp:FileUpload id="FileUpload1" ....  />


...
</form>

クエリ文字列経由でファイル パスを送信したくない場合は、非表示のフォーム フィールドを作成すると、ファイル パスがポスト経由で送信されます。

于 2013-01-04T09:20:56.663 に答える