Pregunta

Tengo un control ASP FileUpload y estoy subiendo:

C:\Documents and Settings\abpa\Desktop\TTPublisher\apache-tomcat-6.0.26\webapps\ttpub\WEB-INF\classes\org\gtfs\tmp\GTFS_Rail\routes.txt

¿Cuál es el código C # para agarrar esta cadena completa con el siguiente código:

var pathOfCsvFile = Server.MapPath(ImportRoutes.FileName);
var adapter = new GenericParsing.GenericParserAdapter(pathOfCsvFile);
DataTable data = adapter.GetDataTable();

Yo sé que las necesidades Server.MapPath a cambio.

ACTUALIZACIÓN:

El uso de System.IO.Path.GetFullPath me dio el siguiente resultado:

pathOfCsvFile = "C:\\Program Files\\Common Files\\Microsoft Shared\\DevServer\\10.0\\routes.txt"

¿Fue útil?

Solución

Se están mezclando el comportamiento del cliente y el servidor, que es fácil de hacer cuando se está probando a nivel local. El problema que tiene es que el FileUploadControl (y la carga de archivos HTML en general) está diseñado específicamente para no le proporcionará la completa ruta de acceso al archivo. Eso sería una violación de la privacidad. Lo que es diseñado para dar es la de datos binarios del archivo que se ha subido en sí. Específicamente usted debe consultar las propiedades en FileUploadControl:. FileBytes o fileContent

Solo para aclarar aún más la cuestión, ¿qué pasaría si el usuario del navegador era en realidad en una máquina física diferente del servidor web (el caso habitual)? ¿De qué serviría la ruta completa del archivo en la máquina cliente a ser que en el servidor

Otros consejos

Server.MapPath devolverá la ruta física a un archivo en o por debajo de la raíz de la aplicación. Si ese camino que la lista está fuera de la raíz de la aplicación, Server.MapPath no funcionará.

Puede asignar un directorio virtual a una carpeta que desea utilizar para la carga de archivos de retención, que luego se puede descubrir con Server.MapPath.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top