質問
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"
解決
クライアントとサーバーの動作を混ぜ合わせています。これは、ローカルでテストするときに簡単です。あなたが抱えている問題は、fileuploadControl(および一般的にHTMLファイルアップロード)が特別に設計されていることです いいえ を提供します 満杯 ファイルへのパス。それはプライバシー侵害です。何それ は アップロードされたファイルのバイナリデータが提供するように設計されています。具体的には、fileuploadcontrol:filebytesまたはfilecontentのプロパティを照会する必要があります。
問題をさらに明確にするために、ブラウザのユーザーが実際にWebサーバーとは物理的に異なるマシン(通常のケース)にあった場合はどうなりますか?ファイルのフルパスは何が良いでしょうか クライアントマシンで あなたになります サーバ?
他のヒント
server.mappathは、アプリケーションルートの下または下のファイルへの物理パスを返します。そのパスリストがアプリケーションルートの外側にある場合、server.mappathは機能しません。
Virtual Directoryを使用してファイルアップロードを保持するために使用するフォルダーにマップできます。これをServer.Mappathで発見できます。