OVH Cloud OVH Cloud

Souci d'Upload (Urgent)

4 réponses
Avatar
stefrs
Bonjour à tous en espérant trouver la solution parmi vous.

Lorsque je réalise un UpLoad à l'aide d'un contrôle HTML File Field, pour
une image par exemple, pas de problème. Ce contrôle possédant bien l'attribut
runat=server.

Lorsque je tente en revanche une copie du client vers le serveur, sans
passer par ce contrôle, mais en utilisant la classe File, ça plante !!

Extrait du code :
System.IO.File.Copy(fichier2,MapPath("") + "\\societes_photos\\" +
fichier1,true);

fichier1 e fichier2 étant des variables de type string...

Pourtant tous mes tests en localhost fonctionnent bien mais chez
l'hébergeur, impossible. Je tiens à préciser que tous les privilèges d'accès
sur le dossier de destination du serveur sont correctement paramétrés pour
permettre l'UpLoad. J'avais déjà rencontré le problème mais je m'étais
résigné.

Dois-je utiliser une autre classe, une autre méthode ?

Ma version Asp.Net est 2003 et non 2005...

Thank you all pour vos réponses multiples, j'en suis sûr !!

4 réponses

Avatar
Patrice
La première méthode est la bonne.

La deuxième nécessiterait que le client ait accès au serveur via un lecteur
réseau ce qui n'est bien sûr pas le cas (et ta syntaxe me semble bizarre
mais ce n'est pas ce qui bloque).
Cela marche en localhost car alors ton client et ton serveur sont la même
machine (ou cela pourrait marcher sur un réseau interne par exemple mais
bien sûir cela ne marchera plus pour quelqu'un hors du réseau).

--

"stefrs" a écrit dans le message de
news:
Bonjour à tous en espérant trouver la solution parmi vous.

Lorsque je réalise un UpLoad à l'aide d'un contrôle HTML File Field, pour
une image par exemple, pas de problème. Ce contrôle possédant bien
l'attribut
runat=server.

Lorsque je tente en revanche une copie du client vers le serveur, sans
passer par ce contrôle, mais en utilisant la classe File, ça plante !!

Extrait du code :
System.IO.File.Copy(fichier2,MapPath("") + "societes_photos" +
fichier1,true);

fichier1 e fichier2 étant des variables de type string...

Pourtant tous mes tests en localhost fonctionnent bien mais chez
l'hébergeur, impossible. Je tiens à préciser que tous les privilèges
d'accès
sur le dossier de destination du serveur sont correctement paramétrés pour
permettre l'UpLoad. J'avais déjà rencontré le problème mais je m'étais
résigné.

Dois-je utiliser une autre classe, une autre méthode ?

Ma version Asp.Net est 2003 et non 2005...

Thank you all pour vos réponses multiples, j'en suis sûr !!


Avatar
stefrs
Quand même, j'ai du mal à concevoir que l'utilisation d'un contrôle File
Field soit l'unique méthode pour réaliser un UpLoad. Si l'UpLoad doit se
réaliser sans action de l'utilisateur, les classes File et FileIndo
disponibles en Asp.Net doivent bien permettre de réaliser des copies de
fichiers sur le serveur dans un dossier pour lequel les privilèges sont
correctement paramétrés.

La syntaxe que j'ai écrite est la bonne, pas l'ombre d'un doute...Son
exploitation par contre !

D'AUTRES REPONSES !?

S'il vous plaît c'est urgent et quelqu'un doit avoir la solution ou avoir
déjà été confronté au problème !!!

Merci d'avance...

"Patrice" a écrit :

La première méthode est la bonne.

La deuxième nécessiterait que le client ait accès au serveur via un lecteur
réseau ce qui n'est bien sûr pas le cas (et ta syntaxe me semble bizarre
mais ce n'est pas ce qui bloque).
Cela marche en localhost car alors ton client et ton serveur sont la même
machine (ou cela pourrait marcher sur un réseau interne par exemple mais
bien sûir cela ne marchera plus pour quelqu'un hors du réseau).

--

"stefrs" a écrit dans le message de
news:
> Bonjour à tous en espérant trouver la solution parmi vous.
>
> Lorsque je réalise un UpLoad à l'aide d'un contrôle HTML File Field, pour
> une image par exemple, pas de problème. Ce contrôle possédant bien
> l'attribut
> runat=server.
>
> Lorsque je tente en revanche une copie du client vers le serveur, sans
> passer par ce contrôle, mais en utilisant la classe File, ça plante !!
>
> Extrait du code :
> System.IO.File.Copy(fichier2,MapPath("") + "societes_photos" +
> fichier1,true);
>
> fichier1 e fichier2 étant des variables de type string...
>
> Pourtant tous mes tests en localhost fonctionnent bien mais chez
> l'hébergeur, impossible. Je tiens à préciser que tous les privilèges
> d'accès
> sur le dossier de destination du serveur sont correctement paramétrés pour
> permettre l'UpLoad. J'avais déjà rencontré le problème mais je m'étais
> résigné.
>
> Dois-je utiliser une autre classe, une autre méthode ?
>
> Ma version Asp.Net est 2003 et non 2005...
>
> Thank you all pour vos réponses multiples, j'en suis sûr !!





Avatar
Arnaud CLERET
Bonjour,

Pour utiliser la méthode File.Copy, il est nécessaire que le compte
exécutant cette action possède les droits en lecture sur le fichier source
(client) et les droits en écriture sur le répertoire cible (serveur).

Dans le cadre de l'utilisation de cette méthode dans une application
ASP.NET, c'est le compte d'exécution du pool sous IIS6 qui est utilisé et
qui doit donc posséder les droits décris ci-dessus. Ce qui par ailleurs ne
me parrait pas très sécurisé et très souple en matière de déploiement !

Si c'est depuis le client que vous transférez le fichier au travers d'une
application windows, les droits du compte client doivent permettre l'accès
en écriture au partage serveur.

Si tous les droits sont bien paramétrés, pas de raisons que cela ne
fonctionne pas :-)

--
arno - http://www.dotnetguru2.org/acleret/

"stefrs" a écrit dans le message de
news:
Quand même, j'ai du mal à concevoir que l'utilisation d'un contrôle File
Field soit l'unique méthode pour réaliser un UpLoad. Si l'UpLoad doit se
réaliser sans action de l'utilisateur, les classes File et FileIndo
disponibles en Asp.Net doivent bien permettre de réaliser des copies de
fichiers sur le serveur dans un dossier pour lequel les privilèges sont
correctement paramétrés.

La syntaxe que j'ai écrite est la bonne, pas l'ombre d'un doute...Son
exploitation par contre !

D'AUTRES REPONSES !?

S'il vous plaît c'est urgent et quelqu'un doit avoir la solution ou avoir
déjà été confronté au problème !!!

Merci d'avance...

"Patrice" a écrit :

La première méthode est la bonne.

La deuxième nécessiterait que le client ait accès au serveur via un
lecteur
réseau ce qui n'est bien sûr pas le cas (et ta syntaxe me semble bizarre
mais ce n'est pas ce qui bloque).
Cela marche en localhost car alors ton client et ton serveur sont la même
machine (ou cela pourrait marcher sur un réseau interne par exemple mais
bien sûir cela ne marchera plus pour quelqu'un hors du réseau).

--

"stefrs" a écrit dans le message de
news:
> Bonjour à tous en espérant trouver la solution parmi vous.
>
> Lorsque je réalise un UpLoad à l'aide d'un contrôle HTML File Field,
> pour
> une image par exemple, pas de problème. Ce contrôle possédant bien
> l'attribut
> runat=server.
>
> Lorsque je tente en revanche une copie du client vers le serveur, sans
> passer par ce contrôle, mais en utilisant la classe File, ça plante !!
>
> Extrait du code :
> System.IO.File.Copy(fichier2,MapPath("") + "societes_photos" +
> fichier1,true);
>
> fichier1 e fichier2 étant des variables de type string...
>
> Pourtant tous mes tests en localhost fonctionnent bien mais chez
> l'hébergeur, impossible. Je tiens à préciser que tous les privilèges
> d'accès
> sur le dossier de destination du serveur sont correctement paramétrés
> pour
> permettre l'UpLoad. J'avais déjà rencontré le problème mais je m'étais
> résigné.
>
> Dois-je utiliser une autre classe, une autre méthode ?
>
> Ma version Asp.Net est 2003 et non 2005...
>
> Thank you all pour vos réponses multiples, j'en suis sûr !!







Avatar
Patrice
Pour le tout venant c'est la seule façon (sécurité : l'utilisateur doit
explicitement indiquer qu'il veut effectivement transférer un fichier et
lequel il s'agit - ce contrôle par exemple ne peut pas être rempli par
programmation).

Après si tu es sur le même réseau avec des stations configurées
correctement, ta méthode pourrait marcher. Est-ce la cas ? Indique toujours
le message exact plutôt que de simplement dire que cela plante. Affiche
aussi l'intégralité dur chemin source et du chemin destination pour vérifier
qu'il est correct. Sinon il s'agit souvent de problèmes de droits...


--
Patrice

"stefrs" a écrit dans le message de
news:
Quand même, j'ai du mal à concevoir que l'utilisation d'un contrôle File
Field soit l'unique méthode pour réaliser un UpLoad. Si l'UpLoad doit se
réaliser sans action de l'utilisateur, les classes File et FileIndo
disponibles en Asp.Net doivent bien permettre de réaliser des copies de
fichiers sur le serveur dans un dossier pour lequel les privilèges sont
correctement paramétrés.

La syntaxe que j'ai écrite est la bonne, pas l'ombre d'un doute...Son
exploitation par contre !

D'AUTRES REPONSES !?

S'il vous plaît c'est urgent et quelqu'un doit avoir la solution ou avoir
déjà été confronté au problème !!!

Merci d'avance...

"Patrice" a écrit :

La première méthode est la bonne.

La deuxième nécessiterait que le client ait accès au serveur via un
lecteur
réseau ce qui n'est bien sûr pas le cas (et ta syntaxe me semble bizarre
mais ce n'est pas ce qui bloque).
Cela marche en localhost car alors ton client et ton serveur sont la même
machine (ou cela pourrait marcher sur un réseau interne par exemple mais
bien sûir cela ne marchera plus pour quelqu'un hors du réseau).

--

"stefrs" a écrit dans le message de
news:
> Bonjour à tous en espérant trouver la solution parmi vous.
>
> Lorsque je réalise un UpLoad à l'aide d'un contrôle HTML File Field,
> pour
> une image par exemple, pas de problème. Ce contrôle possédant bien
> l'attribut
> runat=server.
>
> Lorsque je tente en revanche une copie du client vers le serveur, sans
> passer par ce contrôle, mais en utilisant la classe File, ça plante !!
>
> Extrait du code :
> System.IO.File.Copy(fichier2,MapPath("") + "societes_photos" +
> fichier1,true);
>
> fichier1 e fichier2 étant des variables de type string...
>
> Pourtant tous mes tests en localhost fonctionnent bien mais chez
> l'hébergeur, impossible. Je tiens à préciser que tous les privilèges
> d'accès
> sur le dossier de destination du serveur sont correctement paramétrés
> pour
> permettre l'UpLoad. J'avais déjà rencontré le problème mais je m'étais
> résigné.
>
> Dois-je utiliser une autre classe, une autre méthode ?
>
> Ma version Asp.Net est 2003 et non 2005...
>
> Thank you all pour vos réponses multiples, j'en suis sûr !!