C#获取完整文件路径

我有一个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将不起作用。

您可以将虚拟目录映射到要用于保存文件上载的文件夹,然后可以使用Server.MapPath进行发现。