Question

J'ai un contrôle ASP FileUpload et je suis ajout:

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

Quel est le code C # pour saisir cette chaîne entière en utilisant le code ci-dessous:

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

Je sais que les besoins Server.MapPath au changement.

Mise à jour:

Utilisation System.IO.Path.GetFullPath m'a donné la sortie ci-dessous:

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

Était-ce utile?

La solution

Vous confondez le comportement du client et le serveur, ce qui est facile à faire lorsque vous testez sur place. Le problème que vous rencontrez est que le FileUploadControl (et le téléchargement de fichiers HTML en général) est spécialement conçu pour pas vous fournir les complet chemin du fichier. Ce serait une atteinte à la vie privée. Qu'est-ce qu'il conçu pour vous donner est les données binaires du fichier qui a été téléchargé lui-même. Plus précisément, vous devez interroger les propriétés sur FileUploadControl. FileBytes ou ContenuFichier

Juste pour clarifier davantage la question, ce qui arriverait si l'utilisateur du navigateur était en fait sur une machine physiquement différent du serveur Web (le cas habituel)? A quoi bon le chemin complet du fichier sur la machine client vous être sur le serveur

Autres conseils

Server.MapPath retourne le chemin physique vers un fichier dans ou sous la racine de l'application. Si ce chemin que vous la liste est en dehors de la racine de l'application, Server.MapPath ne fonctionnera pas.

Vous pouvez mapper un répertoire virtuel dans un dossier que vous souhaitez utiliser pour le téléchargement de fichiers de maintien, que vous pouvez découvrir avec Server.MapPath.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top