基本的なファイル情報を抽出している.aspxページにファイルアップロードコントロールがあります。要件は、選択したファイルの絶対パスをクライアントのマシンからデータベースに保存する必要があることです。
私はこのサイトだけでなく、セキュリティ上の理由からASP.NETがクライアントのマシンから情報を読み取ることを本質的に許可していない他のサイトでも読んだことがあります。
しかし、jsなどを使用して絶対パスを取得し、それをasp.net変数に渡す方法があるかどうか疑問に思っていますか?
基本的なファイル情報を抽出している.aspxページにファイルアップロードコントロールがあります。要件は、選択したファイルの絶対パスをクライアントのマシンからデータベースに保存する必要があることです。
私はこのサイトだけでなく、セキュリティ上の理由からASP.NETがクライアントのマシンから情報を読み取ることを本質的に許可していない他のサイトでも読んだことがあります。
しかし、jsなどを使用して絶対パスを取得し、それをasp.net変数に渡す方法があるかどうか疑問に思っていますか?
この制限については、合理的なことは何もできません。
ユーザーのマシン上の完全に信頼されたコードであれば、それを行うことができます。したがって、あなたの目標は、ユーザーに情報を提供するものをインストールするよう説得することです。
Windows の場合 (すべて何らかのインストールが必要です):
私は、ほとんどすべてのプラットフォームにもそうする方法があると信じています... 同様に面倒なインストール要件があります。
クライアント マシンのパスを取得できません。セキュリティ上の理由から、ブラウザはファイルの完全なパスを投稿しません。
ファイルのフルパスを取得できません。セキュリティ上の理由から、ブラウザはファイルの完全なパスを投稿しません。
以下のコードを Java スクリプトで使用してみてください。
lbltext.Text = FileUpload1.PostedFile.FileName
ブラウザは完全なファイル パスなしでファイルを送信するため、ファイル パスを取得するには、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>
クエリ文字列経由でファイル パスを送信したくない場合は、非表示のフォーム フィールドを作成すると、ファイル パスがポスト経由で送信されます。