3

ASP FileUpload コントロールがあり、アップロードしています:

C:\Documents and Settings\abpa\Desktop\TTPublisher\apache-tomcat-6.0.26\webapps\ttpub\WEB-INF\classes\org\gtfs\tmp\GTFS_Rail\routes.txt

以下のコードを使用して、この文字列全体を取得する C# コードは何ですか?

var pathOfCsvFile = Server.MapPath(ImportRoutes.FileName);
var adapter = new GenericParsing.GenericParserAdapter(pathOfCsvFile);
DataTable data = adapter.GetDataTable();

Server.MapPath を変更する必要があることはわかっています。

アップデート:

を使用System.IO.Path.GetFullPathすると、以下の出力が得られました。

pathOfCsvFile = "C:\\Program Files\\Common Files\\Microsoft Shared\\DevServer\\10.0\\routes.txt"

4

2 に答える 2

7

クライアントとサーバーの動作を混同しています。これは、ローカルでテストしているときに簡単に実行できます。あなたが抱えている問題は、FileUploadControl (および一般的な HTML ファイルのアップロード) が、ファイルへの完全なパスを提供しないように特別に設計されていることです。それはプライバシーの侵害になります。提供するように設計されているのは、アップロードされたファイル自体のバイナリ データです。具体的には、FileUploadControl のプロパティ (FileBytes または FileContent) をクエリする必要があります。

問題をさらに明確にするために、ブラウザのユーザーが実際に Web サーバーとは物理的に異なるマシンにいる場合 (通常の場合) はどうなるでしょうか? クライアント マシン上のファイルのフル パスは、サーバー上でどのような利点がありますか?

于 2010-08-26T15:45:25.580 に答える
0

Server.MapPath は、アプリケーション ルート内またはその下にあるファイルへの物理パスを返します。リストしたパスがアプリケーション ルートの外にある場合、Server.MapPath は機能しません。

ファイルのアップロードを保持するために使用するフォルダーに仮想ディレクトリをマップできます。これは、Server.MapPath で検出できます。

于 2010-08-26T15:46:12.227 に答える