C#获取完整文件路径

时间:2010-08-26 15:42:56

标签: c# asp.net gtfs

我有一个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"

2 个答案:

答案 0 :(得分:7)

您正在混淆客户端和服务器行为,这在本地测试时很容易实现。您遇到的问题是FileUploadControl(以及一般的HTML文件上传)专门设计为为您提供文件的完整路径。这将是一个隐私泄露。 旨在为您提供的是自己上传的文件的二进制数据。具体来说,您应该查询FileUploadControl上的属性:FileBytes或FileContent。

为了进一步澄清问题,如果浏览器用户实际上在与Web服务器不同的机器上(通常情况下)会发生什么? 服务器上的客户端计算机上的文件的完整路径有什么用处?

答案 1 :(得分:0)

Server.MapPath将返回应用程序根目录中或下面的文件的物理路径。如果您列出的路径位于应用程序根目录之外,则Server.MapPath将不起作用。

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