OVH Cloud OVH Cloud

Upload de fichier Asp.Net - C#

5 réponses
Avatar
stefrs
Bonjour, j'ai un problème d'utilisation du contrôle HtmlInputFile() en C#;
Le client parcourt et choisit un fichier dont le chemin se charge dans le
contrôle HtmlInputFile que je nomme fichier.

Pour en faire une copie sur le serveur(UpLoad), j'utilise le code suivant:
fichier.PostedFile.SaveAs(Server.MapPath("/img/essai1.jpg"));

En gros et pour l'exemple, le fichier doit être enregistré sur le serveur
dans le sous dossier img sous le nom essai1.jpg.

Mais à chaque fois le message d'erreur suivant survient:
La référence d'objet n'est pas définie à une instance d'un objet.

Même si j'instancie cet objet, le message apparaît à l'identique. Et
pourtant, chose encore plus surprenante, le même code, transcrit en VB.Net,
sans instanciation, ne pose pas de souci, lui !!!

Est-ce que quelqu'un peut m'aider !!??

S'il vous plaît, c'est urgent et ça m'enlèverait une énorme épine du pied
!!!!!

5 réponses

Avatar
Lionel LASKE
C'est probablement un problème de droit.
Il faut s'assurer que le compte ASPNET (ou le compte configuré pour les
accès anonymes) dispose bien des droits d'exploration et d'écriture.
Voir http://support.microsoft.com/?id23245 pour plus d'information.

Lionel.

"stefrs" a écrit dans le message de
news:
Bonjour, j'ai un problème d'utilisation du contrôle HtmlInputFile() en C#;
Le client parcourt et choisit un fichier dont le chemin se charge dans le
contrôle HtmlInputFile que je nomme fichier.

Pour en faire une copie sur le serveur(UpLoad), j'utilise le code suivant:
fichier.PostedFile.SaveAs(Server.MapPath("/img/essai1.jpg"));

En gros et pour l'exemple, le fichier doit être enregistré sur le serveur
dans le sous dossier img sous le nom essai1.jpg.

Mais à chaque fois le message d'erreur suivant survient:
La référence d'objet n'est pas définie à une instance d'un objet.

Même si j'instancie cet objet, le message apparaît à l'identique. Et
pourtant, chose encore plus surprenante, le même code, transcrit en
VB.Net,
sans instanciation, ne pose pas de souci, lui !!!

Est-ce que quelqu'un peut m'aider !!??

S'il vous plaît, c'est urgent et ça m'enlèverait une énorme épine du pied
!!!!!



Avatar
stefrs
Non rien à faire même en suivant scrupuleusement les indications de l'article.
Je vais même jusqu'à autoriser les droits maximum sur le dossier cible du
serveur. Mais, rien n'y fait, j'ai toujours le fameux et très ennuyeux:
> La référence d'objet n'est pas définie à une instance d'un objet.



La vraiment, je ne vois plus comment faire !!

"Lionel LASKE" a écrit :


C'est probablement un problème de droit.
Il faut s'assurer que le compte ASPNET (ou le compte configuré pour les
accès anonymes) dispose bien des droits d'exploration et d'écriture.
Voir http://support.microsoft.com/?id23245 pour plus d'information.

Lionel.

"stefrs" a écrit dans le message de
news:
> Bonjour, j'ai un problème d'utilisation du contrôle HtmlInputFile() en C#;
> Le client parcourt et choisit un fichier dont le chemin se charge dans le
> contrôle HtmlInputFile que je nomme fichier.
>
> Pour en faire une copie sur le serveur(UpLoad), j'utilise le code suivant:
> fichier.PostedFile.SaveAs(Server.MapPath("/img/essai1.jpg"));
>
> En gros et pour l'exemple, le fichier doit être enregistré sur le serveur
> dans le sous dossier img sous le nom essai1.jpg.
>
> Mais à chaque fois le message d'erreur suivant survient:
> La référence d'objet n'est pas définie à une instance d'un objet.
>
> Même si j'instancie cet objet, le message apparaît à l'identique. Et
> pourtant, chose encore plus surprenante, le même code, transcrit en
> VB.Net,
> sans instanciation, ne pose pas de souci, lui !!!
>
> Est-ce que quelqu'un peut m'aider !!??
>
> S'il vous plaît, c'est urgent et ça m'enlèverait une énorme épine du pied
> !!!!!
>





Avatar
Dominique
Question : comment fais tu pour récupérer le nom du fichier choisi dans le
code aspx ?

Dominique

"stefrs" a écrit dans le message de
news:
Non rien à faire même en suivant scrupuleusement les indications de
l'article.
Je vais même jusqu'à autoriser les droits maximum sur le dossier cible du
serveur. Mais, rien n'y fait, j'ai toujours le fameux et très ennuyeux:
> La référence d'objet n'est pas définie à une instance d'un objet.



La vraiment, je ne vois plus comment faire !!

"Lionel LASKE" a écrit :


C'est probablement un problème de droit.
Il faut s'assurer que le compte ASPNET (ou le compte configuré pour les
accès anonymes) dispose bien des droits d'exploration et d'écriture.
Voir http://support.microsoft.com/?id23245 pour plus d'information.

Lionel.

"stefrs" a écrit dans le message de
news:
> Bonjour, j'ai un problème d'utilisation du contrôle HtmlInputFile() en
> C#;
> Le client parcourt et choisit un fichier dont le chemin se charge dans
> le
> contrôle HtmlInputFile que je nomme fichier.
>
> Pour en faire une copie sur le serveur(UpLoad), j'utilise le code
> suivant:
> fichier.PostedFile.SaveAs(Server.MapPath("/img/essai1.jpg"));
>
> En gros et pour l'exemple, le fichier doit être enregistré sur le
> serveur
> dans le sous dossier img sous le nom essai1.jpg.
>
> Mais à chaque fois le message d'erreur suivant survient:
> La référence d'objet n'est pas définie à une instance d'un objet.
>
> Même si j'instancie cet objet, le message apparaît à l'identique. Et
> pourtant, chose encore plus surprenante, le même code, transcrit en
> VB.Net,
> sans instanciation, ne pose pas de souci, lui !!!
>
> Est-ce que quelqu'un peut m'aider !!??
>
> S'il vous plaît, c'est urgent et ça m'enlèverait une énorme épine du
> pied
> !!!!!
>







Avatar
Aurélien [MS]
Bonjour,

Peux-être que tu pourrais nous mettre le code de ta page ?

--
Aurélien Norie
Microsoft France
--------------------
Merci de bien vouloir répondre à ce message dans le newsgroup où il a été
posté. Je le consulte régulièrement.


"stefrs" a écrit dans le message de
news:
Non rien à faire même en suivant scrupuleusement les indications de
l'article.
Je vais même jusqu'à autoriser les droits maximum sur le dossier cible du
serveur. Mais, rien n'y fait, j'ai toujours le fameux et très ennuyeux:
> La référence d'objet n'est pas définie à une instance d'un objet.



La vraiment, je ne vois plus comment faire !!

"Lionel LASKE" a écrit :


C'est probablement un problème de droit.
Il faut s'assurer que le compte ASPNET (ou le compte configuré pour les
accès anonymes) dispose bien des droits d'exploration et d'écriture.
Voir http://support.microsoft.com/?id23245 pour plus d'information.

Lionel.

"stefrs" a écrit dans le message de
news:
> Bonjour, j'ai un problème d'utilisation du contrôle HtmlInputFile() en
> C#;
> Le client parcourt et choisit un fichier dont le chemin se charge dans
> le
> contrôle HtmlInputFile que je nomme fichier.
>
> Pour en faire une copie sur le serveur(UpLoad), j'utilise le code
> suivant:
> fichier.PostedFile.SaveAs(Server.MapPath("/img/essai1.jpg"));
>
> En gros et pour l'exemple, le fichier doit être enregistré sur le
> serveur
> dans le sous dossier img sous le nom essai1.jpg.
>
> Mais à chaque fois le message d'erreur suivant survient:
> La référence d'objet n'est pas définie à une instance d'un objet.
>
> Même si j'instancie cet objet, le message apparaît à l'identique. Et
> pourtant, chose encore plus surprenante, le même code, transcrit en
> VB.Net,
> sans instanciation, ne pose pas de souci, lui !!!
>
> Est-ce que quelqu'un peut m'aider !!??
>
> S'il vous plaît, c'est urgent et ça m'enlèverait une énorme épine du
> pied
> !!!!!
>







Avatar
stefrs
Merci à vous pour vos réponses,

Entre temps j'ai cherché et trouvé une solution pour constater que ASP.Net
(2002) avec C# bogué pour mon code d'UpLoad. J'ai donc migré en 2003 et le
code strictement identique fonctionne cette fois parfaitement...

Le code est (Mon contrôle HtmlInputFile étant nommé les_photos1):

System.IO.FileInfo fichier1 = new System.IO.FileInfo(les_photos1.Value).Name;
les_photos1.PostedFile.SaveAs(Server.MapPath("") + "img" + fichier1);

Merci à vous !!

"Dominique" a écrit :

J'ai une implémentation qui marche correctement :

Dans la page html j'ai créé un web composant PlaceHolder
private void Page_Load(object sender, System.EventArgs e)
{
....
// create the file FileDownload
HtmlInputFile PdfFile = new HtmlInputFile();
PdfFile.ID = "PdfFileDownload";
// add it to the placeholder
PlaceHolder1.Controls.Clear();
PlaceHolder1.Controls.Add(PdfFile);
....
}

Pour télécharger le fichier :

HtmlInputFile PdfFile = (HtmlInputFile)PlaceHolder1.FindControl("PdfFileDownload");
if (PdfFile.PostedFile.FileName.Length>0)
{
PdfFile.PostedFile.SaveAs(PubRec.pdfFullName) ;
}

Le répertoire de destination "c:...." a les droits de lecture, écriture et modification pour l'utilisateur ASPNET. Attention le contenu du composant est perdu en cas de rechargement de la page...

Dominique

"stefrs" a écrit dans le message de news:
> Non rien à faire même en suivant scrupuleusement les indications de l'article.
> Je vais même jusqu'à autoriser les droits maximum sur le dossier cible du
> serveur. Mais, rien n'y fait, j'ai toujours le fameux et très ennuyeux:
>> > La référence d'objet n'est pas définie à une instance d'un objet.
>
> La vraiment, je ne vois plus comment faire !!
>
> "Lionel LASKE" a écrit :
>
>>
>> C'est probablement un problème de droit.
>> Il faut s'assurer que le compte ASPNET (ou le compte configuré pour les
>> accès anonymes) dispose bien des droits d'exploration et d'écriture.
>> Voir http://support.microsoft.com/?id23245 pour plus d'information.
>>
>> Lionel.
>>
>> "stefrs" a écrit dans le message de
>> news:
>> > Bonjour, j'ai un problème d'utilisation du contrôle HtmlInputFile() en C#;
>> > Le client parcourt et choisit un fichier dont le chemin se charge dans le
>> > contrôle HtmlInputFile que je nomme fichier.
>> >
>> > Pour en faire une copie sur le serveur(UpLoad), j'utilise le code suivant:
>> > fichier.PostedFile.SaveAs(Server.MapPath("/img/essai1.jpg"));
>> >
>> > En gros et pour l'exemple, le fichier doit être enregistré sur le serveur
>> > dans le sous dossier img sous le nom essai1.jpg.
>> >
>> > Mais à chaque fois le message d'erreur suivant survient:
>> > La référence d'objet n'est pas définie à une instance d'un objet.
>> >
>> > Même si j'instancie cet objet, le message apparaît à l'identique. Et
>> > pourtant, chose encore plus surprenante, le même code, transcrit en
>> > VB.Net,
>> > sans instanciation, ne pose pas de souci, lui !!!
>> >
>> > Est-ce que quelqu'un peut m'aider !!??
>> >
>> > S'il vous plaît, c'est urgent et ça m'enlèverait une énorme épine du pied
>> > !!!!!
>> >
>>
>>
>>