Вопрос

У меня есть контроль 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"

Это было полезно?

Решение

Вы смешиваете клиентское и серверное поведение, что легко сделать, когда вы тестируете локально. Проблема, в которой вы имеете в том, что файлюпло RoadControl (и загрузка файла HTML в целом) специально предназначено для нет предоставить вам полный путь к файлу. Это было бы нарушением конфиденциальности. Что это является Предназначен для того, чтобы дать вам двоичные данные файла, который был загружен. В частности, вам следует запрашивать свойства на FileuPloadControl: filebytes или filecontent.

Просто для дальнейшего прояснения проблемы, что произойдет, если пользователь браузера фактически на физически разной машине с веб-сервера (обычный случай)? Что хорошего будет полный путь файла На клиентской машине быть для вас на сервер?

Другие советы

Server.mappath вернет физический путь к файлу в или ниже корневого приложения. Если этот путь, который вы перечислены за пределами корня приложения, Server.mappath не будет работать.

Вы можете сопоставить виртуальный каталог в папку, которую вы хотите использовать для хранения загрузки файлов, которые вы можете обнаружить с Server.mappath.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top