IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Envoi d'un fichier en ajax via formulaire bindé


Sujet :

ASP.NET MVC

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut Envoi d'un fichier en ajax via formulaire bindé
    Bonjour.

    Voilà, aujourd'hui je bloque sur un cas très simple O_o.
    J'ai une class d'objet utilisée pour ma base de données. Voici un exemple cré rapido :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public class TestModel
    {
    	public TestModel()
    	{
     
    	}
     
    	[Key]
    	[Required]
    	public Int32 Id { get; set; }
     
    	[Required]
    	public String Name { get; set; }
     
    	public Byte[] File { get; set; }
    }
    Voici un exemple de vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    @model namespace.Models.TestModal
     
    @{
        ViewBag.Title = "XXXXXXX";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
     
    @using (Html.BeginForm("Action", "Controller", FormMethod.Post, new { autocomplete = "off", enctype = "multipart/form-data" }))
    {
    	@Html.ValidationSummary(true)
    	@Html.HiddenFor(model => model.Id, new { @id = "" })
     
    	@Html.LabelFor(model => model.Name)
    	@Html.TextBoxFor(model => model.Name)
    	@Html.ValidationMessageFor(model => model.Name)
     
    	@Html.LabelFor(model => model.Logo)
    	@Html.TextBoxFor(model => model.Logo, new { type = "file", accept = "image/png" })
    	@Html.ValidationMessageFor(model => model.Logo)
     
    	<button type="button">Sauvegarder</button>
    }
    et un bout de code de mon controlleur, rien de bien compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [AcceptVerbs(HttpVerbs.Post)]
            [ValidateInput(false)]
            public void ManageCompany(TestModel Test)
            {
     
            }
    J'aimerais donc envoyer un fichier par ajax, en utilisant jQuery.
    Seulement je suis bloqué. Lorsque j'essai de sérialiser mon formulaire au travers de la fonction serialize(), mon fichier n’apparaît pas.
    Pourriez-vous m'indiquer une solution svp ?
    J'ai bien entendu cherché sur google, mais je n'ai pas trouvé de solution pour mon cas. Je ne peux pas changer le type de la propriété "File", ni même surcharger ma classe.

    Merci bien .

  2. #2
    Membre du Club Avatar de k4st0r42
    Homme Profil pro
    Artisan numérique
    Inscrit en
    Janvier 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisan numérique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 48
    Points : 68
    Points
    68
    Par défaut
    je ne crois pas que tu puisses faire ceci avec XMLHttpRequest.

    C'est par contre différent avec le XMLHttpRequest Niveau 2 d'après ce que j'ai compris : http://dev.opera.com/articles/view/x...progressevents

    Je pense que la meilleure solution est de passer par ce type de plugin (puisque tu utilises jQuery) : http://malsup.com/jquery/form/#code-samples

    Je l'ai déjà utilisé pour ça et ça fonctionne.
    Je crois que ce plugin fais une "feinte" avec un système qui utilise des iframes.
    Le fossé séparant théorie et pratique est moins large en théorie qu’il ne l’est en pratique.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Points : 647
    Points
    647
    Par défaut
    J'imagine que ton code proviens de copier/coller ..

    Alors peut être que ma réponse va sembler inutile au possible, mais ta classe est déclarée en "TestModel" et ta view TestModal...

    Sans doute une broutille, mais qui pourrait avoir son importance !

Discussions similaires

  1. [PHP, AJAX via jQuery] Envoi d'un formulaire
    Par Gun.Man dans le forum Langage
    Réponses: 1
    Dernier message: 02/11/2012, 22h22
  2. Récupération d'un fichier avec Ajax via un formulaire
    Par ludivine49 dans le forum Langage
    Réponses: 2
    Dernier message: 21/06/2010, 16h51
  3. [MySQL] Envoi d'information dans une base de donnée via formulaire
    Par Mysti¢ dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 30/03/2006, 20h35
  4. Script d'envoie d'un fichier excel via un formulaire
    Par Morphine.Nw dans le forum ASP
    Réponses: 4
    Dernier message: 26/01/2006, 13h08
  5. [Web] Upload fichier via formulaire HTTP
    Par nik00s dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/08/2005, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo