MapPath メソッドは、指定された相対パスや仮想パスを、サーバー上の対応する物理ディレクトリにマップします。
Server.MapPath( Path )
MapPath メソッドでは、返されるパスが有効であるかどうか、またサーバー上に存在するかどうかはチェックされません。Session.OnEnd イベントおよび Application.OnEnd イベントでは、MapPath が使用できません。
MapPath メソッドは、指定されたディレクトリが現在存在しているかどうかにかかわらず、パスをマップします。このため、MapPath メソッドを使用してパスを物理ディレクトリ構造にマップしてから、指定されたディレクトリやファイルをサーバー上に作成するコンポーネントにそのパスを渡すことができます。
セキュリティ上の理由から、AspEnableParentPaths プロパティの既定値は FALSE に設定されています。AspEnableParentPaths が TRUE に設定されない限り、スクリプトから物理ディレクトリ構造にアクセスすることはできません。
次のスクリプト例で、ファイル data.txt は C:\Inetpub\Wwwroot\Script というディレクトリにあります。 また、次のスクリプトが記述されている test.asp というファイルも同じディレクトリにあります。C:\Inetpub\Wwwroot ディレクトリは、サーバーのホーム ディレクトリとして設定されています。
次の例は、サーバー変数 PATH_INFO
を使用して現在のファイルの物理パスをマップします。
<%= Server.MapPath(Request.ServerVariables("PATH_INFO"))%><BR>
このスクリプトの出力は、次のようになります。
c:\inetpub\wwwroot\script\test.asp<BR>
次の例のパス パラメータはスラッシュまたは円記号で始まっていないため、現在のディレクトリ (ここでは C:\Inetpub\Wwwroot\Script) からの相対パスとしてマップされます。
<%= Server.MapPath("data.txt")%><BR>
<%= Server.MapPath("script/data.txt")%><BR>
以上のスクリプトの出力は、次のようになります。
c:\inetpub\wwwroot\script\data.txt<BR>
c:\inetpub\wwwroot\script\script\data.txt<BR>
次の 2 つの例は、スラッシュまたは円記号を使い、返されるパスがサーバー上の完全な仮想パスを参照するように指定します。
<%= Server.MapPath("/script/data.txt")%><BR>
<%= Server.MapPath("\script")%><BR>
以上のスクリプトの出力は、次のようになります。
c:\inetpub\wwwroot\script\data.txt<BR>
c:\inetpub\wwwroot\script<BR>
次の例は、スラッシュ (/) または円記号 (\) を使用して、Web サイトのルートにおけるホーム ディレクトリの物理パスを返す方法を示しています。
<%= Server.MapPath("/")%><BR>
<%= Server.MapPath("\")%><BR>
以上のスクリプトの出力は、次のようになります。
c:\inetpub\wwwroot<BR>
c:\inetpub\wwwroot<BR>
次の例は、相対パスを使用して、Web ブラウザで表示されているページへの相対物理パスを返す方法を示しています。
<%= Server.MapPath("../")%><BR>
<%= Server.MapPath("..\")%><BR>