Pit_the_Hitman
Messages postés2Date d'inscriptiondimanche 18 janvier 2004StatutMembreDernière intervention 3 octobre 2006
-
2 oct. 2006 à 10:58
Pit_the_Hitman
Messages postés2Date d'inscriptiondimanche 18 janvier 2004StatutMembreDernière intervention 3 octobre 2006
-
3 oct. 2006 à 09:27
Bonjour à tous,
Etant chargé pour un stage de réaliser un formulaire web ayant une interaction avec Microsoft CRM, j'ai besoin de fournir aux utilisateurs la possibilité d'uploader des fichiers à l'aide d'un bouton de type:
<
input
id="file1"
type="file"
runat="server"
/>
Ensuite, dans le code behind, j'upload le fichiers sur le serveur:
Bon il y a des fonctions spécifiques au SDK de MS CRM mais mon problème survient à la ligne:
FileStream
fs =
File.OpenRead(file1.Value);
Lors des tests, l'upload fonctionne nickel avec IE car que ce soit file1.Value ou file1.PostedFile.Filename, je recupere bien le chemin de la machine cliente (ex: C:\test.txt)
Or qd je switch sur Firefox, j'ai beau utiliser file1.value ou file1.postedfile.filename, je ne recupere que le nom du fichier (test.txt dans mon exemple) ce qui se traduit par une erreur du genre:
Impossible de trouver le fichier 'C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\test.txt'
Voila si qqn pouvait m'aider la dessus je lui en serait reconnaissant car la seule piste que j'ai trouvé sur le net était d'utiliser:
System.IO.Path.GetFullPath(file1.PostedFile.Filename) <-- Me retourne aussi 'C:\Program Files\Microsoft Visual Studio 8\Common7\IDE en chemin sous Firefox
System.IO.Path.GetDirectoryName(file1.PostedFile.Filename) <-- Me retourne "" (rien quoi xD) sous Firefox
Merci par avance pour votre aide et pour m'avoir lu.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 2 oct. 2006 à 11:40
Bonjour,
PostedFile.FileName est inutile celui ci va te retourner le nom du fichier sur la machine client mais sur le server tu n'as pas accés à ce fichier !!! pour l'instant ca fonctionne car tu bosses en local mais une fois que tu auras déployé ton site le serveur n'aura pas accés à ce fichier donc ca va planter.
Il faut passer par PostedFile.InputStream pour recuperer le stream du fichier uploadé ou alors utilisé la méthode SaveAs(String filename) qui permet d'enregistrer le fichier sur le serveur.
Pour des raisons de securité n'utilises jamais postedFile.FileName imagine que quelqu'un t'envoie un fichier nommé web.config ou lapage.aspx et que tu stock ces fichiers dans un repertoire du site (ce qu'il ne faut pas faire non plus)