我有一个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发现该文件夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top